Index: /branches/eam_branches/ipp-20130419/Ohana/src/dvomerge/src/dvomergeFromList.c
===================================================================
--- /branches/eam_branches/ipp-20130419/Ohana/src/dvomerge/src/dvomergeFromList.c	(revision 35546)
+++ /branches/eam_branches/ipp-20130419/Ohana/src/dvomerge/src/dvomergeFromList.c	(revision 35547)
@@ -103,4 +103,9 @@
     sprintf (outputfile, "%s/%s", output, list[i]);
 
+    OutputStatus *outstat = OutputStatusInit (1);
+    outstat[0].history = dmhObjectRead (outputfile);
+
+    dmhObjectStats *inStats = dmhObjectStatsRead (inputfile);
+
     LoadCatalog (&incatalog, NULL, inputfile, "r", NsecfiltInput);
 
@@ -138,4 +143,6 @@
     outcatalog.catflags = LOAD_AVES | LOAD_MEAS | LOAD_MISS | LOAD_SECF;
 
+    dmhObjectAdd (outstat[0].history, &outcatalog.header, inStats);
+
     // if we receive a signal which would cause us to exit, wait until the full catalog is written
     SetProtect (TRUE);
@@ -148,4 +155,7 @@
     fprintf (stderr, "merged %s into %s\n", inputfile, outputfile);
 
+    dmhObjectStatsFree (inStats);
+    OutputStatusFree (outstat, 1);
+
     dvo_catalog_unlock (&outcatalog);
     dvo_catalog_free (&outcatalog);
Index: /branches/eam_branches/ipp-20130419/Ohana/src/dvomerge/src/dvoverify_utils.c
===================================================================
--- /branches/eam_branches/ipp-20130419/Ohana/src/dvomerge/src/dvoverify_utils.c	(revision 35546)
+++ /branches/eam_branches/ipp-20130419/Ohana/src/dvomerge/src/dvoverify_utils.c	(revision 35547)
@@ -26,4 +26,9 @@
   if (!VerifyTableFile (filename)) {
     fprintf (stderr, "bad average table %s\n", filename);
+    isGood = FALSE;
+  }
+
+  if (!CheckCatalogIndexes(filename, NULL)){
+    fprintf (stderr, "bad indexes in %s\n", filename);
     isGood = FALSE;
   }
@@ -45,4 +50,5 @@
     isGood = FALSE;
   }
+
   return (isGood);
 }
Index: /branches/eam_branches/ipp-20130419/Ohana/src/dvopsps/src/insert_objects_dvopsps_catalog.c
===================================================================
--- /branches/eam_branches/ipp-20130419/Ohana/src/dvopsps/src/insert_objects_dvopsps_catalog.c	(revision 35546)
+++ /branches/eam_branches/ipp-20130419/Ohana/src/dvopsps/src/insert_objects_dvopsps_catalog.c	(revision 35547)
@@ -158,8 +158,8 @@
 		 "MAG_ERR FLOAT,  "         
 		 "MAG_CHI FLOAT,  "         
-		 "FLUX_PSF FLOAT,  "        
-		 "FLUX_PSF_ERR FLOAT,  "    
-		 "FLUX_KRON FLOAT,  "       
-		 "FLUX_KRON_ERR FLOAT,  "   
+		 "STACK_PSF_MAG FLOAT,  "        
+		 "STACK_PSF_MAG_ERR FLOAT,  "    
+		 "STACK_KRON_MAG FLOAT,  "       
+		 "STACK_KRON_MAG_ERR FLOAT,  "   
 		 "FLAGS INT,  "           
 		 "NCODE SMALLINT,  "           
@@ -171,4 +171,9 @@
 		 "STACK_DETECT_ID BIGINT" 
 		 ")\n", basename);
+
+ // 		 "FLUX_PSF FLOAT,  "        
+ //  		 "FLUX_PSF_ERR FLOAT,  "    
+ //  		 "FLUX_KRON FLOAT,  "       
+ //  		 "FLUX_KRON_ERR FLOAT,  "   
 
   if (DEBUG) fprintf (stderr, "%s\n", buffer.buffer);
@@ -237,8 +242,8 @@
 		 "MAG_ERR, "         
 		 "MAG_CHI, "         
-		 "FLUX_PSF, "        
-		 "FLUX_PSF_ERR, "    
-		 "FLUX_KRON, "       
-		 "FLUX_KRON_ERR, "   
+		 "STACK_PSF_MAG, "        
+		 "STACK_PSF_MAG_ERR, "    
+		 "STACK_KRON_MAG, "       
+		 "STACK_KRON_MAG_ERR, "   
 		 "FLAGS, "           
 		 "NCODE, "           
@@ -296,17 +301,55 @@
   PrintIOBuffer (ave_buffer, "),\n");
 
-// XXX this bit could/should be autocoded...
   for (i = 0; i < Nsecfilt; i++) {
+    float meanPSFMag    = -999.0;
+    float meanPSFMagErr = -999.0;
+    if (isfinite(secfilt->dM) && isfinite(secfilt->M)) {
+      meanPSFMag = secfilt->M;
+      meanPSFMagErr = secfilt->dM;
+    }
+
+    float meanKronMag    = -999.0;
+    float meanKronMagErr = -999.0;
+    if (isfinite(secfilt->dMkron) && isfinite(secfilt->Mkron) && (secfilt->dMkron < 0.333)) {
+      meanKronMag = secfilt->Mkron;
+      meanKronMagErr = secfilt->dMkron;
+    }
+
+    float meanApMag    = -999.0;
+    if (isfinite(secfilt->Map)) {
+      meanApMag = secfilt->Map;
+    }
+
+    float stackPSFMag    = -999.0;
+    float stackPSFMagErr = -999.0;
+    if (isfinite(secfilt->dFluxPSF) && isfinite(secfilt->FluxPSF) && (secfilt->dFluxPSF > 0.0)) {
+      float SN = secfilt->FluxPSF / secfilt->dFluxPSF;
+      if (SN > 3.0) {
+	stackPSFMag = -2.5 * log10(secfilt->FluxPSF) + 8.9;
+	stackPSFMagErr = secfilt->dFluxPSF / secfilt->FluxPSF;
+      }
+    }
+
+    float stackKronMag    = -999.0;
+    float stackKronMagErr = -999.0;
+    if (isfinite(secfilt->dFluxKron) && isfinite(secfilt->FluxKron) && (secfilt->dFluxKron > 0.0)) {
+      float SN = secfilt->FluxKron / secfilt->dFluxKron;
+      if (SN > 3.0) {
+	stackKronMag = -2.5 * log10(secfilt->FluxKron) + 8.9;
+	stackKronMagErr = secfilt->dFluxKron / secfilt->FluxKron;
+      }
+    }
+
     PrintIOBuffer (sec_buffer, " (");
-    PRINT_FLOAT(sec_buffer, secfilt->M,      	"%.6f, "); // umag precision
-    PRINT_FLOAT(sec_buffer, secfilt->Map,    	"%.6f, "); // umag precision
-    PRINT_FLOAT(sec_buffer, secfilt->Mkron,  	"%.6f, "); // umag precision
-    PRINT_FLOAT(sec_buffer, secfilt->dMkron, 	"%.6f, "); // umag precision
-    PRINT_FLOAT(sec_buffer, secfilt->dM,     	"%.6f, "); // umag precision
-    PRINT_FLOAT(sec_buffer, secfilt->Xm,     	"%.6f, ");
-    PRINT_FLOAT(sec_buffer, secfilt->FluxPSF,   "%.6e, "); // 0.36 umag precision
-    PRINT_FLOAT(sec_buffer, secfilt->dFluxPSF,  "%.6e, "); // 0.36 umag precision
-    PRINT_FLOAT(sec_buffer, secfilt->FluxKron,  "%.6e, "); // 0.36 umag precision
-    PRINT_FLOAT(sec_buffer, secfilt->dFluxKron, "%.6e, "); // 0.36 umag precision
+    PRINT_FLOAT(sec_buffer, meanPSFMag,      "%.6f, "); // umag precision
+    PRINT_FLOAT(sec_buffer, meanApMag,       "%.6f, "); // umag precision
+    PRINT_FLOAT(sec_buffer, meanKronMag,     "%.6f, "); // umag precision
+    PRINT_FLOAT(sec_buffer, meanKronMagErr,  "%.6f, "); // umag precision
+    PRINT_FLOAT(sec_buffer, meanPSFMagErr,   "%.6f, "); // umag precision
+    PRINT_FLOAT(sec_buffer, secfilt->Xm,     "%.6f, ");
+    PRINT_FLOAT(sec_buffer, stackPSFMag,     "%.6f, "); // umag precision
+    PRINT_FLOAT(sec_buffer, stackPSFMagErr,  "%.6f, "); // umag precision
+    PRINT_FLOAT(sec_buffer, stackKronMag,    "%.6f, "); // umag precision
+    PRINT_FLOAT(sec_buffer, stackKronMagErr, "%.6f, "); // 0.36 umag precision
     PrintIOBuffer (sec_buffer, "%u,  ", secfilt->flags);       
     PrintIOBuffer (sec_buffer, "%hd, ", secfilt->Ncode);        
Index: /branches/eam_branches/ipp-20130419/Ohana/src/libdvo/src/dbExtractMeasures.c
===================================================================
--- /branches/eam_branches/ipp-20130419/Ohana/src/libdvo/src/dbExtractMeasures.c	(revision 35546)
+++ /branches/eam_branches/ipp-20130419/Ohana/src/libdvo/src/dbExtractMeasures.c	(revision 35547)
@@ -93,5 +93,5 @@
   Coords *mosaic, *fieldc;
 
-  PhotCode *equiv;
+  PhotCode *equiv = NULL;
 
   value.Flt = NAN;
Index: /branches/eam_branches/ipp-20130419/Ohana/src/relastro/src/UpdateObjectOffsets.c
===================================================================
--- /branches/eam_branches/ipp-20130419/Ohana/src/relastro/src/UpdateObjectOffsets.c	(revision 35546)
+++ /branches/eam_branches/ipp-20130419/Ohana/src/relastro/src/UpdateObjectOffsets.c	(revision 35547)
@@ -60,4 +60,6 @@
     // uses MeasureTiny values, but will also update Measure values when populated
     UpdateObjects (&catalog, 1);
+
+    free_tiny_values(&catalog);
 
     freeImageBins (1);
Index: /branches/eam_branches/ipp-20130419/Ohana/src/relastro/src/high_speed_objects.c
===================================================================
--- /branches/eam_branches/ipp-20130419/Ohana/src/relastro/src/high_speed_objects.c	(revision 35546)
+++ /branches/eam_branches/ipp-20130419/Ohana/src/relastro/src/high_speed_objects.c	(revision 35547)
@@ -272,4 +272,5 @@
   populate_tiny_values (&catalogOut, DVO_TV_MEASURE);
   UpdateObjects (&catalogOut, 1);
+  free_tiny_values(&catalogOut);
 
   fprintf (stderr, "found %d matches\n", Nmatch);
Index: /branches/eam_branches/ipp-20130419/Ohana/src/relastro/src/hpm_objects.c
===================================================================
--- /branches/eam_branches/ipp-20130419/Ohana/src/relastro/src/hpm_objects.c	(revision 35546)
+++ /branches/eam_branches/ipp-20130419/Ohana/src/relastro/src/hpm_objects.c	(revision 35547)
@@ -258,4 +258,6 @@
     UpdateObjects (&testcat, 1);
 
+    free_tiny_values(&testcat);
+
     // logic for keeping the fit (anything else?)
     int good = FALSE;
@@ -285,4 +287,5 @@
   populate_tiny_values (&catalogOut, DVO_TV_MEASURE);
   UpdateObjects (&catalogOut, 1);
+  free_tiny_values(&catalogOut);
 
   fprintf (stderr, "found "OFF_T_FMT" matches with "OFF_T_FMT" detections\n", catalogOut.Naverage, catalogOut.Nmeasure);
Index: /branches/eam_branches/ipp-20130419/Ohana/src/relphot/src/relphot_images.c
===================================================================
--- /branches/eam_branches/ipp-20130419/Ohana/src/relphot/src/relphot_images.c	(revision 35546)
+++ /branches/eam_branches/ipp-20130419/Ohana/src/relphot/src/relphot_images.c	(revision 35547)
@@ -224,4 +224,5 @@
     /* at this point, we have correct cal coeffs in the image/mosaic structures */
     for (i = 0; i < Ncatalog; i++) {
+      // these tiny values are set by BrightCatalogSplit from load_catalogs
       free_tiny_values (&catalog[i]);
       dvo_catalog_free (&catalog[i]);
Index: /branches/eam_branches/ipp-20130419/Ohana/src/uniphot/src/update_catalog_setphot.c
===================================================================
--- /branches/eam_branches/ipp-20130419/Ohana/src/uniphot/src/update_catalog_setphot.c	(revision 35546)
+++ /branches/eam_branches/ipp-20130419/Ohana/src/uniphot/src/update_catalog_setphot.c	(revision 35547)
@@ -17,4 +17,6 @@
 
       off_t id = index[idx];
+      if (id < 0) continue;
+
       float Mcal = image[id].Mcal;
       float dMcal = image[id].dMcal;
