Index: /trunk/psphot/src/psphotModelBackground.c
===================================================================
--- /trunk/psphot/src/psphotModelBackground.c	(revision 37939)
+++ /trunk/psphot/src/psphotModelBackground.c	(revision 37940)
@@ -277,4 +277,5 @@
         psFree(binning);
         psFree(rng);
+        psFree(dQ);
         return false;
     }
@@ -386,5 +387,10 @@
 
     if (!psphotModelBackgroundReadout(model->image, modelStdev->image, model->analysis, readout, binning, config, false)) {
-        psError(PS_ERR_UNKNOWN, false, "Unable to generate background model");
+        int lastError = psErrorCodeLast();
+        if (lastError == PSPHOT_ERR_DATA) {
+            // depending on context this value may or may not be used
+            psMetadataAddS32 (readout->analysis, PS_LIST_TAIL, "PSPHOT_QUALITY", PS_META_REPLACE, "quality error due to poor data", lastError);
+        }
+        psError(lastError, false, "Unable to generate background model");
         return false;
     }
@@ -404,5 +410,6 @@
     for (int i = 0; i < num; i++) {
         if (!psphotModelBackgroundReadoutFileIndex(config, view, filerule, i)) {
-	    psError (PSPHOT_ERR_CONFIG, false, "failed to model background for %s entry %d", filerule, i);
+            int lastError = psErrorCodeLast();
+	    psError (lastError ? lastError : PSPHOT_ERR_CONFIG, false, "failed to model background for %s entry %d", filerule, i);
             return false;
         }
