Index: /branches/eam_branches/ipp-20140610/Ohana/src/libdvo/src/dvo_catalog.c
===================================================================
--- /branches/eam_branches/ipp-20140610/Ohana/src/libdvo/src/dvo_catalog.c	(revision 36945)
+++ /branches/eam_branches/ipp-20140610/Ohana/src/libdvo/src/dvo_catalog.c	(revision 36946)
@@ -533,4 +533,5 @@
   }
 
+  // closes f but does not set back to NULL
   fclearlockfile (catalog[0].filename, catalog[0].f, catalog[0].lockmode, &dbstate);
 
@@ -944,11 +945,21 @@
     }
     if (catalog[0].lensing_catalog != NULL) {
-      if (!dvo_catalog_backup (catalog[0].lensing_catalog, FALSE)) {
-	return FALSE;
+      if (catalog[0].Nlensing_disk == 0) {
+	// need to relock (and re-open) file for close elsewhere
+	status = dvo_catalog_lock (catalog[0].lensing_catalog, lockmode);
+      } else {
+	if (!dvo_catalog_backup (catalog[0].lensing_catalog, FALSE)) {
+	  return FALSE;
+	}
       }
     }
     if (catalog[0].lensobj_catalog != NULL) {
-      if (!dvo_catalog_backup (catalog[0].lensobj_catalog, FALSE)) {
-	return FALSE;
+      if (catalog[0].Nlensobj_disk == 0) {
+	// need to relock (and re-open) file for close elsewhere
+	status = dvo_catalog_lock (catalog[0].lensobj_catalog, lockmode);
+      } else {
+	if (!dvo_catalog_backup (catalog[0].lensobj_catalog, FALSE)) {
+	  return FALSE;
+	}
       }
     }
@@ -974,5 +985,5 @@
   status = unlink (tmpfilename);
   if (status) {
-    fprintf (stderr, "failed to unlink catalog %s\n", catalog->filename);
+    fprintf (stderr, "failed to unlink catalog %s~\n", catalog->filename);
     return FALSE;
   }
@@ -994,10 +1005,10 @@
       }
     }
-    if (catalog[0].lensing_catalog != NULL) {
+    if ((catalog[0].lensing_catalog != NULL) && (catalog[0].Nlensing_disk > 0)) {
       if (!dvo_catalog_unlink_backup (catalog[0].lensing_catalog, FALSE)) {
 	return FALSE;
       }
     }
-    if (catalog[0].lensobj_catalog != NULL) {
+    if ((catalog[0].lensobj_catalog != NULL) && (catalog[0].Nlensobj_disk > 0)) {
       if (!dvo_catalog_unlink_backup (catalog[0].lensobj_catalog, FALSE)) {
 	return FALSE;
