Index: /trunk/Ohana/src/dvopsps/include/dvopsps.h
===================================================================
--- /trunk/Ohana/src/dvopsps/include/dvopsps.h	(revision 35205)
+++ /trunk/Ohana/src/dvopsps/include/dvopsps.h	(revision 35206)
@@ -5,5 +5,5 @@
 
 # define DVO_MAX_PATH 1024
-# define MAX_BUFFER 0x080000
+# define MAX_BUFFER 0x0800
 
 typedef struct {
@@ -31,4 +31,6 @@
 char        *HOSTDIR;
 int          VERBOSE;
+
+int          SAVE_REMOTE;
 
 int          PARALLEL;
Index: /trunk/Ohana/src/dvopsps/src/initialize_dvopsps.c
===================================================================
--- /trunk/Ohana/src/dvopsps/src/initialize_dvopsps.c	(revision 35205)
+++ /trunk/Ohana/src/dvopsps/src/initialize_dvopsps.c	(revision 35206)
@@ -104,4 +104,10 @@
   if ((N = get_argument (argc, argv, "-v"))) {
     VERBOSE = TRUE;
+    remove_argument (N, &argc, argv);
+  }
+
+  SAVE_REMOTE = TRUE;
+  if ((N = get_argument (argc, argv, "-insert-remote"))) {
+    SAVE_REMOTE = FALSE;
     remove_argument (N, &argc, argv);
   }
@@ -260,4 +266,10 @@
   }
 
+  SAVE_REMOTE = TRUE;
+  if ((N = get_argument (argc, argv, "-insert-remote"))) {
+    SAVE_REMOTE = FALSE;
+    remove_argument (N, &argc, argv);
+  }
+
   HOST_ID = 0;
   if ((N = get_argument (argc, argv, "-hostID"))) {
Index: /trunk/Ohana/src/dvopsps/src/insert_detections_dvopsps.c
===================================================================
--- /trunk/Ohana/src/dvopsps/src/insert_detections_dvopsps.c	(revision 35205)
+++ /trunk/Ohana/src/dvopsps/src/insert_detections_dvopsps.c	(revision 35206)
@@ -1,5 +1,5 @@
 # include "dvopsps.h"
 # define USE_MYSQL 1
-# define SAVE_REMOTE 1
+// # define SAVE_REMOTE 1
 
 # define MARKTIME(MSG,...) {			\
@@ -237,4 +237,8 @@
 }
 
+# define PRINT_FLOAT(BUFFER,FIELD,FORMAT)		  \
+  if (!isfinite(FIELD)) PrintIOBuffer (BUFFER, "NULL, "); \
+  else PrintIOBuffer (BUFFER, FORMAT, FIELD); 
+
 int insert_detections_mysql_detvalue (IOBuffer *buffer, Detections *detection) {
 
@@ -245,12 +249,12 @@
   PrintIOBuffer (buffer, "%lu, ", detection->objID);	  // objID
   PrintIOBuffer (buffer, "%u, ", detection->flags);	  // flags
-  if (isnan(detection->zp))      PrintIOBuffer (buffer, "NULL, "); else PrintIOBuffer (buffer, "%f, ",  detection->zp);	  // zp
-  if (isnan(detection->zpErr))   PrintIOBuffer (buffer, "NULL, "); else PrintIOBuffer (buffer, "%f, ",  detection->zpErr);	  // zpErr
-  if (isnan(detection->airMass)) PrintIOBuffer (buffer, "NULL, "); else PrintIOBuffer (buffer, "%f, ",  detection->airMass);	  // 
-  if (isnan(detection->expTime)) PrintIOBuffer (buffer, "NULL, "); else PrintIOBuffer (buffer, "%f, ",  detection->expTime);	  // expTime
-  if (isnan(detection->ra))      PrintIOBuffer (buffer, "NULL, "); else PrintIOBuffer (buffer, "%lf, ", detection->ra);	  // ra
-  if (isnan(detection->dec))     PrintIOBuffer (buffer, "NULL, "); else PrintIOBuffer (buffer, "%lf, ", detection->dec);	  // dec
-  if (isnan(detection->raErr))   PrintIOBuffer (buffer, "NULL, "); else PrintIOBuffer (buffer, "%f, ",  detection->raErr);	  // estimate of raErr
-  if (isnan(detection->decErr))  PrintIOBuffer (buffer, "NULL, "); else PrintIOBuffer (buffer, "%f),\n",  detection->decErr);	  // estimate of decErr
+  PRINT_FLOAT(buffer, detection->zp, "%f, ");
+  PRINT_FLOAT(buffer, detection->zpErr, "%f, ");
+  PRINT_FLOAT(buffer, detection->airMass, "%f, ");
+  PRINT_FLOAT(buffer, detection->expTime, "%f, ");
+  PRINT_FLOAT(buffer, detection->ra, "%lf, ");
+  PRINT_FLOAT(buffer, detection->dec, "%lf, ");
+  PRINT_FLOAT(buffer, detection->raErr, "%f, ");
+  PRINT_FLOAT(buffer, detection->decErr, "%f),\n");
   return TRUE;
 }
Index: /trunk/Ohana/src/dvopsps/src/insert_detections_dvopsps_catalog.c
===================================================================
--- /trunk/Ohana/src/dvopsps/src/insert_detections_dvopsps_catalog.c	(revision 35205)
+++ /trunk/Ohana/src/dvopsps/src/insert_detections_dvopsps_catalog.c	(revision 35206)
@@ -153,26 +153,48 @@
 }
 
+# define PRINT_FLOAT(BUFFER,FIELD,FORMAT)		  \
+  if (isinf(FIELD) || isnan(FIELD)) PrintIOBuffer (BUFFER, "NULL, ");	\
+  else PrintIOBuffer (BUFFER, FORMAT, FIELD); 
+
 int insert_detections_mysql_value (IOBuffer *buffer, Average *average, Measure *measure) {
 
   // XXX I am changing the def of ippObjID if I use the code below
   PhotCode *code = GetPhotcodebyCode(measure->photcode);
-  PrintIOBuffer (buffer, "    (%d, %u, %lu, %lu, %lu, %u, %f, %f, %f, %f, %lf, %lf, %f, %f),\n",
-		 measure->imageID,    // imageID
-		 measure->detID,   // ippDetectID
-		 measure->extID,   // detectID
-		 ((uint64_t)average->catID * 1000000000) + (uint64_t)average->objID, // ippObjID
-// NOTE: this is better, but the above is the current ippToPsps value
-//				((uint64_t)average->catID << 32) + (uint64_t)average->objID, // ippObjID
-		 average->extID,   // objID
-		 measure->dbFlags,  // flags
-		 code->C * 0.001 + code->K * (measure->airmass - 1) - measure->Mcal,   // zp
-		 measure->dMcal,    // zpErr
-		 measure->airmass,
-		 pow(10.0, 0.4 * measure->dt),    // expTime
-		 average->R - measure->dR / 3600.,    // ra
-		 average->D - measure->dR / 3600.,    // dec
-		 measure->dXccd * 0.01 * fabs(measure->pltscale), // estimate of raErr
-		 measure->dYccd * 0.01 * fabs(measure->pltscale) // estimate of decErr
-    ); 
+  // PrintIOBuffer (buffer, "    (%d, %u, %lu, %lu, %lu, %u, %f, %f, %f, %f, %lf, %lf, %f, %f),\n",
+  // 		 measure->imageID,    // imageID
+  // 		 measure->detID,   // ippDetectID
+  // 		 measure->extID,   // detectID
+  // 		 ((uint64_t)average->catID * 1000000000) + (uint64_t)average->objID, // ippObjID
+  // 		 // NOTE: this is better, but the above is the current ippToPsps value
+  // 		 // ((uint64_t)average->catID << 32) + (uint64_t)average->objID, // ippObjID
+  // 		 average->extID,   // objID
+  // 		 measure->dbFlags,  // flags
+  // 		 code->C * 0.001 + code->K * (measure->airmass - 1) - measure->Mcal,   // zp
+  // 		 measure->dMcal,    // zpErr
+  // 		 measure->airmass,
+  // 		 pow(10.0, 0.4 * measure->dt),    // expTime
+  // 		 average->R - measure->dR / 3600.,    // ra
+  // 		 average->D - measure->dR / 3600.,    // dec
+  // 		 measure->dXccd * 0.01 * fabs(measure->pltscale), // estimate of raErr
+  // 		 measure->dYccd * 0.01 * fabs(measure->pltscale) // estimate of decErr
+  //   ); 
+  
+  PrintIOBuffer (buffer, "(%d, ", measure->imageID);	  // imageID
+  PrintIOBuffer (buffer, "%u, ", measure->detID); // ippDetectID
+  PrintIOBuffer (buffer, "%lu, ", measure->extID);	  // detectID
+  PrintIOBuffer (buffer, "%lu, ", ((uint64_t)average->catID * 1000000000) + (uint64_t)average->objID);	  // ippObjID
+  // NOTE: the following is better, but the above is the current ippToPsps value
+  // ((uint64_t)average->catID << 32) + (uint64_t)average->objID, // ippObjID
+  PrintIOBuffer (buffer, "%lu, ", average->extID);	  // objID
+  PrintIOBuffer (buffer, "%u, ", measure->dbFlags);	  // flags
+  PRINT_FLOAT(buffer, code->C * 0.001 + code->K * (measure->airmass - 1) - measure->Mcal, "%f, ");
+  PRINT_FLOAT(buffer, measure->dMcal, "%f, ");
+  PRINT_FLOAT(buffer, measure->airmass, "%f, ");
+  PRINT_FLOAT(buffer, pow(10.0, 0.4 * measure->dt), "%f, ");
+  PRINT_FLOAT(buffer, average->R - measure->dR / 3600., "%lf, ");
+  PRINT_FLOAT(buffer, average->D - measure->dD / 3600., "%lf, ");
+  PRINT_FLOAT(buffer, measure->dXccd * 0.01 * fabs(measure->pltscale), "%f, ");
+  PRINT_FLOAT(buffer, measure->dYccd * 0.01 * fabs(measure->pltscale), "%f),\n");
+  
   return TRUE;
 }
Index: /trunk/Ohana/src/dvopsps/src/insert_objects_dvopsps_catalog.c
===================================================================
--- /trunk/Ohana/src/dvopsps/src/insert_objects_dvopsps_catalog.c	(revision 35205)
+++ /trunk/Ohana/src/dvopsps/src/insert_objects_dvopsps_catalog.c	(revision 35206)
@@ -47,4 +47,6 @@
     // XXX check return status
     insert_objects_mysql_value (&ave_buffer, &sec_buffer, &average[i], &secfilt[i*Nsecfilt], Nsecfilt);
+
+    // fprintf (stderr, "%f : %d %d %d\n", average[i].ChiSqPM, isinf(average[i].ChiSqPM), isnan(average[i].ChiSqPM), isfinite(average[i].ChiSqPM));
 
     // Average is a bigger table, but Nsecfilt*secfilt might be bigger, so check both
@@ -251,4 +253,8 @@
 }
 
+# define PRINT_FLOAT(BUFFER,FIELD,FORMAT)		  \
+  if (isinf(FIELD) || isnan(FIELD)) PrintIOBuffer (BUFFER, "NULL, ");	\
+  else PrintIOBuffer (BUFFER, FORMAT, FIELD); 
+
 int insert_objects_mysql_value (IOBuffer *ave_buffer, IOBuffer *sec_buffer, Average *average, SecFilt *secfilt, int Nsecfilt) {
 
@@ -257,22 +263,22 @@
 // XXX this bit could/should be autocoded...
   PrintIOBuffer (ave_buffer, " (");
-  if (isnan(average->R))              PrintIOBuffer (ave_buffer, "NULL, "); else PrintIOBuffer (ave_buffer, "%lf, ", average->R);              
-  if (isnan(average->D))              PrintIOBuffer (ave_buffer, "NULL, "); else PrintIOBuffer (ave_buffer, "%lf, ", average->D);               
-  if (isnan(average->dR))             PrintIOBuffer (ave_buffer, "NULL, "); else PrintIOBuffer (ave_buffer, "%f, ",  average->dR);             
-  if (isnan(average->dD))             PrintIOBuffer (ave_buffer, "NULL, "); else PrintIOBuffer (ave_buffer, "%f, ",  average->dD);             
-  if (isnan(average->uR))             PrintIOBuffer (ave_buffer, "NULL, "); else PrintIOBuffer (ave_buffer, "%f, ",  average->uR);             
-  if (isnan(average->uD))             PrintIOBuffer (ave_buffer, "NULL, "); else PrintIOBuffer (ave_buffer, "%f, ",  average->uD);             
-  if (isnan(average->duR))            PrintIOBuffer (ave_buffer, "NULL, "); else PrintIOBuffer (ave_buffer, "%f, ",  average->duR);            
-  if (isnan(average->duD))            PrintIOBuffer (ave_buffer, "NULL, "); else PrintIOBuffer (ave_buffer, "%f, ",  average->duD);            
-  if (isnan(average->P))              PrintIOBuffer (ave_buffer, "NULL, "); else PrintIOBuffer (ave_buffer, "%f, ",  average->P);              
-  if (isnan(average->dP))             PrintIOBuffer (ave_buffer, "NULL, "); else PrintIOBuffer (ave_buffer, "%f, ",  average->dP);             
-  if (isnan(average->ChiSqAve))       PrintIOBuffer (ave_buffer, "NULL, "); else PrintIOBuffer (ave_buffer, "%f, ",  average->ChiSqAve);       
-  if (isnan(average->ChiSqPM))        PrintIOBuffer (ave_buffer, "NULL, "); else PrintIOBuffer (ave_buffer, "%f, ",  average->ChiSqPM);        
-  if (isnan(average->ChiSqPar))       PrintIOBuffer (ave_buffer, "NULL, "); else PrintIOBuffer (ave_buffer, "%f, ",  average->ChiSqPar);       
+  PRINT_FLOAT(ave_buffer, average->R, "%lf, ");
+  PRINT_FLOAT(ave_buffer, average->D, "%lf, ");
+  PRINT_FLOAT(ave_buffer, average->dR, "%f, ");
+  PRINT_FLOAT(ave_buffer, average->dD, "%f, ");
+  PRINT_FLOAT(ave_buffer, average->uR, "%f, ");
+  PRINT_FLOAT(ave_buffer, average->uD, "%f, ");
+  PRINT_FLOAT(ave_buffer, average->duR, "%f, ");
+  PRINT_FLOAT(ave_buffer, average->duD, "%f, ");
+  PRINT_FLOAT(ave_buffer, average->P, "%f, ");
+  PRINT_FLOAT(ave_buffer, average->dP, "%f, ");
+  PRINT_FLOAT(ave_buffer, average->ChiSqAve, "%f, ");
+  PRINT_FLOAT(ave_buffer, average->ChiSqPM, "%f, ");
+  PRINT_FLOAT(ave_buffer, average->ChiSqPar, "%f, ");
   PrintIOBuffer (ave_buffer, "%d, ",  average->Tmean);          
   PrintIOBuffer (ave_buffer, "%d, ",  average->Trange);         
-  if (isnan(average->psfQF))          PrintIOBuffer (ave_buffer, "NULL, "); else PrintIOBuffer (ave_buffer, "%f, ",  average->psfQF);          
-  if (isnan(average->psfQFperf))      PrintIOBuffer (ave_buffer, "NULL, "); else PrintIOBuffer (ave_buffer, "%f, ",  average->psfQFperf);      
-  if (isnan(average->stargal))        PrintIOBuffer (ave_buffer, "NULL, "); else PrintIOBuffer (ave_buffer, "%f, ",  average->stargal);        
+  PRINT_FLOAT(ave_buffer, average->psfQF, "%f, ");
+  PRINT_FLOAT(ave_buffer, average->psfQFperf, "%f, ");
+  PRINT_FLOAT(ave_buffer, average->stargal, "%f, ");
   PrintIOBuffer (ave_buffer, "%hu, ", average->Npos);           
   PrintIOBuffer (ave_buffer, "%hu, ", average->Nmeasure);       
@@ -293,14 +299,14 @@
   for (i = 0; i < Nsecfilt; i++) {
     PrintIOBuffer (sec_buffer, " (");
-    if (isnan(secfilt->M))         PrintIOBuffer (sec_buffer, "NULL, "); else PrintIOBuffer (sec_buffer, "%f, ", secfilt->M);           
-    if (isnan(secfilt->Map))       PrintIOBuffer (sec_buffer, "NULL, "); else PrintIOBuffer (sec_buffer, "%f, ", secfilt->Map);         
-    if (isnan(secfilt->Mkron))     PrintIOBuffer (sec_buffer, "NULL, "); else PrintIOBuffer (sec_buffer, "%f, ", secfilt->Mkron);       
-    if (isnan(secfilt->dMkron))    PrintIOBuffer (sec_buffer, "NULL, "); else PrintIOBuffer (sec_buffer, "%f, ", secfilt->dMkron);      
-    if (isnan(secfilt->dM))        PrintIOBuffer (sec_buffer, "NULL, "); else PrintIOBuffer (sec_buffer, "%f, ", secfilt->dM);          
-    if (isnan(secfilt->Xm))        PrintIOBuffer (sec_buffer, "NULL, "); else PrintIOBuffer (sec_buffer, "%f, ", secfilt->Xm);          
-    if (isnan(secfilt->FluxPSF))   PrintIOBuffer (sec_buffer, "NULL, "); else PrintIOBuffer (sec_buffer, "%f, ", secfilt->FluxPSF);     
-    if (isnan(secfilt->dFluxPSF))  PrintIOBuffer (sec_buffer, "NULL, "); else PrintIOBuffer (sec_buffer, "%f, ", secfilt->dFluxPSF);    
-    if (isnan(secfilt->FluxKron))  PrintIOBuffer (sec_buffer, "NULL, "); else PrintIOBuffer (sec_buffer, "%f, ", secfilt->FluxKron);    
-    if (isnan(secfilt->dFluxKron)) PrintIOBuffer (sec_buffer, "NULL, "); else PrintIOBuffer (sec_buffer, "%f, ", secfilt->dFluxKron);   
+    PRINT_FLOAT(sec_buffer, secfilt->M, "%f, ");
+    PRINT_FLOAT(sec_buffer, secfilt->Map, "%f, ");
+    PRINT_FLOAT(sec_buffer, secfilt->Mkron, "%f, ");
+    PRINT_FLOAT(sec_buffer, secfilt->dMkron, "%f, ");
+    PRINT_FLOAT(sec_buffer, secfilt->dM, "%f, ");
+    PRINT_FLOAT(sec_buffer, secfilt->Xm, "%f, ");
+    PRINT_FLOAT(sec_buffer, secfilt->FluxPSF, "%f, ");
+    PRINT_FLOAT(sec_buffer, secfilt->dFluxPSF, "%f, ");
+    PRINT_FLOAT(sec_buffer, secfilt->FluxKron, "%f, ");
+    PRINT_FLOAT(sec_buffer, secfilt->dFluxKron, "%f, ");
     PrintIOBuffer (sec_buffer, "%u,  ", secfilt->flags);       
     PrintIOBuffer (sec_buffer, "%hd, ", secfilt->Ncode);        
