Index: /trunk/ppSub/src/ppSubReadout.c
===================================================================
--- /trunk/ppSub/src/ppSubReadout.c	(revision 13661)
+++ /trunk/ppSub/src/ppSubReadout.c	(revision 13662)
@@ -42,26 +42,15 @@
     psMaskType maskBlank = psMetadataLookupU8(NULL, config->arguments, "MASK.BLANK"); // Mask for blank reg.
 
-    psMaskType maskSat = pmConfigMask("SAT", config); // Mask for saturated pixels
-    psMaskType maskLow = pmConfigMask("BAD", config); // Mask for bad (low) pixels
-
-    if (!inRO->mask && !pmReadoutGenerateMask(inRO, maskSat, maskLow)) {
-        psError(PS_ERR_UNKNOWN, false, "Unable to generate mask for input image");
-        return false;
+    int numCols = input->numCols, numRows = input->numRows; // Image dimensions
+    if (!inRO->mask) {
+        inRO->mask = psImageAlloc(numCols, numRows, PS_TYPE_MASK);
+        psImageInit(inRO->mask, 0);
     }
-    if (!inRO->weight && !pmReadoutGenerateWeight(inRO, true)) {
-        psError(PS_ERR_UNKNOWN, false, "Unable to generate weight map for input image");
-        return false;
-    }
-    if (!refRO->mask && !pmReadoutGenerateMask(refRO, maskSat, maskLow)) {
-        psError(PS_ERR_UNKNOWN, false, "Unable to generate mask for reference image");
-        return false;
-    }
-    if (!refRO->weight && !pmReadoutGenerateWeight(refRO, true)) {
-        psError(PS_ERR_UNKNOWN, false, "Unable to generate weight map for reference image");
-        return false;
+    if (!refRO->mask) {
+        refRO->mask = psImageAlloc(numCols, numRows, PS_TYPE_MASK);
+        psImageInit(inRO->mask, 0);
     }
 
     // Worried about the masks for bad pixels and bad stamps colliding, so make our own mask
-    int numCols = input->numCols, numRows = input->numRows; // Image dimensions
     psImage *stampMask = psImageAlloc(numCols, numRows, PS_TYPE_MASK); // Mask to use for stamps
     for (int y = 0; y < numRows; y++) {
@@ -123,4 +112,12 @@
     }
     psFree(stampMask);
+
+    if (numRejected > 0) {
+        solution = pmSubtractionSolveEquation(solution, stamps);
+        if (!solution) {
+            psError(PS_ERR_UNKNOWN, false, "Unable to calculate least-squares equation.");
+            goto ERROR;
+        }
+    }
 
     psImage *convImage = NULL, *convWeight = NULL, *convMask = NULL; // Convolved images
