Index: /branches/eam_branches/ipp-pstamp-20260421/psphot/src/psphotForcedReadout.c
===================================================================
--- /branches/eam_branches/ipp-pstamp-20260421/psphot/src/psphotForcedReadout.c	(revision 43119)
+++ /branches/eam_branches/ipp-pstamp-20260421/psphot/src/psphotForcedReadout.c	(revision 43120)
@@ -1,3 +1,10 @@
 # include "psphotInternal.h"
+
+# define CLEANUP { \
+  bool cleanupStatus = psphotReadoutCleanup (config, view, filerule); \
+  if (!cleanupStatus) { \
+    psError(psErrorCodeLast(), false, "failure in psphotForcedReadout for chip %d, cell %d, readout %d\n", view->chip, view->cell, view->readout); \
+  } \
+  return cleanupStatus; }
 
 bool psphotForcedReadout(pmConfig *config, const pmFPAview *view, const char *filerule) {
@@ -31,23 +38,15 @@
     // Generate the mask and weight images, including the user-defined analysis region of interest
     psphotSetMaskAndVariance (config, view, filerule);
-    if (!strcasecmp (breakPt, "NOTHING")) {
-        return psphotReadoutCleanup (config, view, filerule);
-    }
+    if (!strcasecmp (breakPt, "NOTHING")) CLEANUP;
 
     // generate a background model (median, smoothed image)
-    if (!psphotModelBackground (config, view, filerule)) {
-        return psphotReadoutCleanup (config, view, filerule);
-    }
-    if (!psphotSubtractBackground (config, view, filerule)) {
-        return psphotReadoutCleanup (config, view, filerule);
-    }
-    if (!strcasecmp (breakPt, "BACKMDL")) {
-        return psphotReadoutCleanup (config, view, filerule);
-    }
+    if (!psphotModelBackground (config, view, filerule)) CLEANUP;
+    if (!psphotSubtractBackground (config, view, filerule)) CLEANUP;
+    if (!strcasecmp (breakPt, "BACKMDL")) CLEANUP;
 
     if (!psphotLoadPSF (config, view, filerule)) {
     	// this only happens if we had a programming error in psphotLoadPSF
         psError (PSPHOT_ERR_UNKNOWN, false, "error loading psf model");
-        return psphotReadoutCleanup (config, view, filerule);
+	CLEANUP;
     }
 
@@ -87,4 +86,4 @@
 
     // create the exported-metadata and free local data
-    return psphotReadoutCleanup (config, view, filerule);
+    CLEANUP;
 }
