Index: /branches/eam_branches/ipp-20150625/Ohana/src/uniphot/src/repair_catalog_by_objID.c
===================================================================
--- /branches/eam_branches/ipp-20150625/Ohana/src/uniphot/src/repair_catalog_by_objID.c	(revision 38632)
+++ /branches/eam_branches/ipp-20150625/Ohana/src/uniphot/src/repair_catalog_by_objID.c	(revision 38633)
@@ -72,4 +72,8 @@
       average[averef].measureOffset = i;
     }
+    if (measureNew[i].averef != averef) {
+      fprintf (stderr, "fixing averef for measure "OFF_T_FMT" (%d -> "OFF_T_FMT")\n", i, measureNew[i].averef, averef);
+      measureNew[i].averef = averef;
+    }
     N++;
   }
@@ -79,4 +83,34 @@
   catalog->measure = measureNew;
 
+  int NmeasureTotal = 0;
+  int measureOffsetOK = TRUE;
+  for (i = 0; i < catalog->Naverage; i++) {
+    NmeasureTotal += catalog[0].average[i].Nmeasure;
+    if (!(NmeasureTotal <= catalog[0].Nmeasure)) {
+      fprintf (stderr, "too many measurements: %d %d %d\n", (int) i, NmeasureTotal, (int) catalog[0].Nmeasure);
+    }
+    measureOffsetOK &= (catalog[0].average[i].measureOffset < catalog[0].Nmeasure);
+    if (!(catalog[0].average[i].measureOffset < catalog[0].Nmeasure)) {
+      fprintf (stderr, "offset too large: %d %d %d\n", (int) i, catalog[0].average[i].Nmeasure, (int) catalog[0].Nmeasure);
+    }
+    measureOffsetOK &= (catalog[0].average[i].measureOffset + catalog[0].average[i].Nmeasure <= catalog[0].Nmeasure);
+    if (!(catalog[0].average[i].measureOffset + catalog[0].average[i].Nmeasure <= catalog[0].Nmeasure)) {
+      fprintf (stderr, "offset + Nmeasure too large: %d + %d > %d %d\n", (int) i, catalog[0].average[i].measureOffset, catalog[0].average[i].Nmeasure, (int) catalog[0].Nmeasure);
+    }
+  }
+
+  int status = TRUE;
+  if (!measureOffsetOK) {
+    fprintf (stderr, "ERROR: catalog %s has an invalid measureOffset\n", catalog[0].filename);
+    status = FALSE;
+  }
+
+  if (NmeasureTotal != catalog[0].Nmeasure) {
+    fprintf (stderr, "ERROR: catalog %s has an invalid Nmeasure\n", catalog[0].filename);
+    status = FALSE;
+  }
+
+  if (!status) exit (2);
+
   return TRUE;
 }
