Index: trunk/psModules/src/camera/pmFPAfileIO.c
===================================================================
--- trunk/psModules/src/camera/pmFPAfileIO.c	(revision 7589)
+++ trunk/psModules/src/camera/pmFPAfileIO.c	(revision 7618)
@@ -261,9 +261,24 @@
 
     // do we need to read this file?
-    if (level != file->dataLevel) {
-        psTrace("pmFPAfile", 6, "skip free of %s at this level %s: dataLevel is %s",
+    if (level != file->freeLevel) {
+        psTrace("pmFPAfile", 6, "skip free of %s at this level %s: freeLevel is %s",
+                file->name, pmFPALevelToName(level), pmFPALevelToName(file->freeLevel));
+        return true;
+    }
+
+    // XXX totally lame hack: how do I handle this?
+    # if 0
+    if (!strcasecmp(file->name, "PPIMAGE.BIN1") && (level != PM_FPA_LEVEL_FPA))
+        {
+            psTrace("pmFPAfile", 5, "skip free of %s at this level %s: dataLevel is %s",
+                    file->name, pmFPALevelToName(level), pmFPALevelToName(file->dataLevel));
+            return true;
+        }
+    if (!strcasecmp(file->name, "PPIMAGE.BIN2") && (level != PM_FPA_LEVEL_FPA)) {
+        psTrace("pmFPAfile", 5, "skip free of %s at this level %s: dataLevel is %s",
                 file->name, pmFPALevelToName(level), pmFPALevelToName(file->dataLevel));
         return true;
     }
+    # endif
 
     switch (file->type) {
@@ -271,4 +286,7 @@
         if (pmFPAviewFreeFitsImage (view, file)) {
             psTrace ("pmFPAfile", 5, "freed %s (type: %d)\n", file->filename, file->type);
+            if (file->filename == NULL) {
+                psTrace ("pmFPAfile", 5, "filename is not defined for %s\n", file->name);
+            }
         } else {
             psError(PS_ERR_UNKNOWN, false, "skipping %s (type: %d)\n", file->filename, file->type);
@@ -310,4 +328,9 @@
     if (file->mode != PM_FPA_MODE_WRITE) {
         psTrace("pmFPAfile", 6, "skip write for %s, mode is not WRITE", file->name);
+        return true;
+    }
+
+    if (!file->save) {
+        psTrace("pmFPAfile", 6, "skip write for %s, save is FALSE", file->name);
         return true;
     }
@@ -393,7 +416,7 @@
 
     // do we need to write this file?
-    if (level != file->dataLevel) {
-        psTrace("pmFPAfile", 6, "skip creation of %s at this level %s: dataLevel is %s",
-                file->name, pmFPALevelToName(level), pmFPALevelToName(file->dataLevel));
+    if (level != file->fileLevel) {
+        psTrace("pmFPAfile", 6, "skip creation of %s at this level %s: fileLevel is %s",
+                file->name, pmFPALevelToName(level), pmFPALevelToName(file->fileLevel));
         return true;
     }
@@ -404,5 +427,5 @@
         /* create a PHU for thie file, if it does not exist */
         pmFPAfileCopyStructureView (file->fpa, file->src, file->format, file->xBin, file->yBin, view);
-        psTrace ("pmFPAfile", 5, "created fpa data elements for %s (fpa: %p)\n", file->name, file->fpa);
+        // psTrace ("pmFPAfile", 5, "created fpa data elements for %s (fpa: %p)\n", file->name, file->fpa);
         break;
 
