Index: trunk/psModules/src/camera/pmFPAfile.c
===================================================================
--- trunk/psModules/src/camera/pmFPAfile.c	(revision 26999)
+++ trunk/psModules/src/camera/pmFPAfile.c	(revision 27000)
@@ -28,4 +28,6 @@
     }
 
+    psAssert(file->fits == NULL, "File %s wasn't closed.", file->name);
+
     psTrace ("pmFPAfileFree", 5, "freeing %s\n", file->name);
     psFree (file->fpa);
@@ -40,7 +42,4 @@
     psFree (file->name);
 
-    if (file->fits != NULL) {
-        psFitsClose (file->fits);
-    }
     psFree(file->compression);
     psFree(file->options);
Index: trunk/psModules/src/camera/pmFPAfileDefine.c
===================================================================
--- trunk/psModules/src/camera/pmFPAfileDefine.c	(revision 26999)
+++ trunk/psModules/src/camera/pmFPAfileDefine.c	(revision 27000)
@@ -461,5 +461,9 @@
             return NULL;
         }
-        psFitsClose(fits);
+        if (!psFitsClose(fits)) {
+            psError(psErrorCodeLast(), false, "Failed to close file %s", realName);
+            psFree(realName);
+            return NULL;
+        }
 
         // Determine the current format from the header; determine camera if not specified already.
@@ -541,5 +545,9 @@
             }
             phu = psFitsReadHeader(NULL, fits);
-            psFitsClose(fits);
+            if (!psFitsClose(fits)) {
+                psError(psErrorCodeLast(), false, "Failed to close file %s", realName);
+                psFree(realName);
+                return NULL;
+            }
             if (!phu) {
                 psError(PS_ERR_IO, false, "Failed to read file header %s", realName);
