Index: /trunk/Ohana/src/tools/src/fits_to_mysql.c
===================================================================
--- /trunk/Ohana/src/tools/src/fits_to_mysql.c	(revision 39058)
+++ /trunk/Ohana/src/tools/src/fits_to_mysql.c	(revision 39059)
@@ -302,4 +302,44 @@
   *ncolumn = Ncolumn;
   return column;
+}
+
+/* print a double an IOBuffer (sprintf_double) */
+int PrintIOBuffer_double (IOBuffer *buffer, double value) {
+
+  /* add the output line to the given IOBuffer */
+  
+  char output[128]; // I can use a fixed-length buffer since sprintf_double prints no more than 22 bytes;
+
+  int Nbyte = sprintf_double (output, value);
+
+  if (buffer[0].Nbuffer + Nbyte + 1 >= buffer[0].Nalloc) {
+    buffer[0].Nalloc = buffer[0].Nbuffer + Nbyte + 64;
+    REALLOCATE (buffer[0].buffer, char, buffer[0].Nalloc);
+  }
+
+  strcpy (&buffer[0].buffer[buffer[0].Nbuffer], output);
+  buffer[0].Nbuffer += Nbyte;
+
+  return (TRUE);
+}
+
+/* float to an IOBuffer (sprintf_float) */
+int PrintIOBuffer_float (IOBuffer *buffer, float value) {
+
+  /* add the output line to the given IOBuffer */
+  
+  char output[128]; // I can use a fixed-length buffer since sprintf_float prints no more than 14 bytes;
+
+  int Nbyte = sprintf_float (output, value);
+
+  if (buffer[0].Nbuffer + Nbyte + 1 >= buffer[0].Nalloc) {
+    buffer[0].Nalloc = buffer[0].Nbuffer + Nbyte + 64;
+    REALLOCATE (buffer[0].buffer, char, buffer[0].Nalloc);
+  }
+
+  strcpy (&buffer[0].buffer[buffer[0].Nbuffer], output);
+  buffer[0].Nbuffer += Nbyte;
+
+  return (TRUE);
 }
 
@@ -532,5 +572,5 @@
 	    float myValue = value[i*columns[Nf].Nval + j];
 	    if (isfinite(myValue)) {
-	      PrintIOBuffer (&output, "%e", myValue);
+	      PrintIOBuffer_float (&output, myValue);
 	    } else {
 	      PrintIOBuffer (&output, "-999");
@@ -545,5 +585,10 @@
 	  double *value = data[Nf];
 	  for (j = 0; j < columns[Nf].Nval; j++) {
-	    PrintIOBuffer (&output, "%e", value[i*columns[Nf].Nval + j]);
+	    double myValue = value[i*columns[Nf].Nval + j];
+	    if (isfinite(myValue)) {
+	      PrintIOBuffer_double (&output, myValue);
+	    } else {
+	      PrintIOBuffer (&output, "-999");
+	    }
 	    if (j < columns[Nf].Nval - 1) {
 	      PrintIOBuffer (&output, ",\n");
