Index: /branches/eam_branches/ipp-20140904/Ohana/src/dvomerge/src/dvomergeUpdate_catalogs.c
===================================================================
--- /branches/eam_branches/ipp-20140904/Ohana/src/dvomerge/src/dvomergeUpdate_catalogs.c	(revision 37549)
+++ /branches/eam_branches/ipp-20140904/Ohana/src/dvomerge/src/dvomergeUpdate_catalogs.c	(revision 37550)
@@ -199,9 +199,13 @@
       SetProtect (FALSE);
 
+      if (!dvo_catalog_unlock (&outcatalog)) {
+	fprintf (stderr, "ERROR: failed to unlock catalog %s\n", outlist[0].filename[j]);
+	exit (1);
+      }
+
       if (!dvo_catalog_unlink_backup (&outcatalog, TRUE)) {
 	fprintf (stderr, "WARNING: failed to remove backup for catalog %s\n", outlist[0].filename[j]);
       }
 
-      dvo_catalog_unlock (&outcatalog);
       dvo_catalog_free (&outcatalog);
 
Index: /branches/eam_branches/ipp-20140904/Ohana/src/dvomerge/src/dvorepairDeleteImagesByExternID.c
===================================================================
--- /branches/eam_branches/ipp-20140904/Ohana/src/dvomerge/src/dvorepairDeleteImagesByExternID.c	(revision 37549)
+++ /branches/eam_branches/ipp-20140904/Ohana/src/dvomerge/src/dvorepairDeleteImagesByExternID.c	(revision 37550)
@@ -301,7 +301,12 @@
 	  int imageID = measure[j].imageID;
 	  myAssert(imageID, "measure is missing an image ID");
+	  // XXX this case is valid if we have REF detections (no associated image)
 
 	  int N = myIndexGetEntry(imageIDindex, imageID);
-	  myAssert (N > -1, "impossible");
+	  if (N < 0) {
+	    // this detection comes from a non-existant image, delete
+	    Ndelete ++;
+	    continue;
+	  }
 
 	  if (deleteImage[N]) {
@@ -421,5 +426,7 @@
   for (i = 0; i < Nimage; i++) {
     if (!image[i].parentID) continue;
-    myAssert (!strcmp(&image[i].coords.ctype[4], "-WRP"), "child with non WRP coords?");
+    if (strcmp(&image[i].coords.ctype[4], "-WRP")) {
+      fprintf (stderr, "warning: child with non WRP coords : %s\n", image[i].name);
+    }
 
     int n = myIndexGetEntry (imageIDindex, image[i].parentID);
Index: /branches/eam_branches/ipp-20140904/Ohana/src/dvomerge/src/dvoverify_utils.c
===================================================================
--- /branches/eam_branches/ipp-20140904/Ohana/src/dvomerge/src/dvoverify_utils.c	(revision 37549)
+++ /branches/eam_branches/ipp-20140904/Ohana/src/dvomerge/src/dvoverify_utils.c	(revision 37550)
@@ -238,6 +238,6 @@
     }
     // lensingOffset needs to be in range for each object
-    lensingOffsetOK &= (catalog.average[i].lensingOffset < catalog.Nlensing);
-    if (VERBOSE && !(catalog.average[i].lensingOffset < catalog.Nlensing)) {
+    lensingOffsetOK &= (!catalog.Nlensing || (catalog.average[i].lensingOffset < catalog.Nlensing));
+    if (VERBOSE && catalog.Nlensing && !(catalog.average[i].lensingOffset < catalog.Nlensing)) {
       fprintf (stderr, "lensingOffset >= catalog.Nlensing: %d %d %d\n", i, catalog.average[i].lensingOffset, (int) catalog.Nlensing);
     }
