Index: /trunk/psModules/src/imcombine/pmSubtractionMatch.c
===================================================================
--- /trunk/psModules/src/imcombine/pmSubtractionMatch.c	(revision 17366)
+++ /trunk/psModules/src/imcombine/pmSubtractionMatch.c	(revision 17367)
@@ -101,6 +101,34 @@
                         psMaskType maskBlank, float badFrac, pmSubtractionMode mode)
 {
-    PM_ASSERT_READOUT_NON_NULL(conv1, false);
-    PM_ASSERT_READOUT_NON_NULL(conv2, false);
+    if (mode != PM_SUBTRACTION_MODE_2) {
+        PM_ASSERT_READOUT_NON_NULL(conv1, false);
+        if (conv1->image) {
+            psFree(conv1->image);
+            conv1->image = NULL;
+        }
+        if (conv1->mask) {
+            psFree(conv1->mask);
+            conv1->mask = NULL;
+        }
+        if (conv1->weight) {
+            psFree(conv1->weight);
+            conv1->weight = NULL;
+        }
+    }
+    if (mode != PM_SUBTRACTION_MODE_1) {
+        PM_ASSERT_READOUT_NON_NULL(conv2, false);
+        if (conv2->image) {
+            psFree(conv2->image);
+            conv2->image = NULL;
+        }
+        if (conv2->mask) {
+            psFree(conv2->mask);
+            conv2->mask = NULL;
+        }
+        if (conv2->weight) {
+            psFree(conv2->weight);
+            conv2->weight = NULL;
+        }
+    }
 
     PM_ASSERT_READOUT_NON_NULL(ro1, false);
@@ -153,30 +181,4 @@
                 footprint, size);
         return false;
-    }
-
-    // Reset the output readouts, just in case
-    if (conv1->image) {
-        psFree(conv1->image);
-        conv1->image = NULL;
-    }
-    if (conv1->mask) {
-        psFree(conv1->mask);
-        conv1->mask = NULL;
-    }
-    if (conv1->weight) {
-        psFree(conv1->weight);
-        conv1->weight = NULL;
-    }
-    if (conv2->image) {
-        psFree(conv2->image);
-        conv2->image = NULL;
-    }
-    if (conv2->mask) {
-        psFree(conv2->mask);
-        conv2->mask = NULL;
-    }
-    if (conv2->weight) {
-        psFree(conv2->weight);
-        conv2->weight = NULL;
     }
 
@@ -474,10 +476,12 @@
 
             // There is data in the readout now
-            conv1->data_exists = true;
-            if (conv1->parent) {
-                conv1->parent->data_exists = true;
-                conv1->parent->parent->data_exists = true;
-            }
-            if (mode == PM_SUBTRACTION_MODE_DUAL) {
+            if (mode == PM_SUBTRACTION_MODE_1 || mode == PM_SUBTRACTION_MODE_DUAL) {
+                conv1->data_exists = true;
+                if (conv1->parent) {
+                    conv1->parent->data_exists = true;
+                    conv1->parent->parent->data_exists = true;
+                }
+            }
+            if (mode == PM_SUBTRACTION_MODE_2 || mode == PM_SUBTRACTION_MODE_DUAL) {
                 conv2->data_exists = true;
                 if (conv2->parent) {
@@ -507,9 +511,11 @@
 #ifdef TESTING
     {
-        psFits *fits = psFitsOpen("convolved1.fits", "w");
-        psFitsWriteImage(fits, NULL, conv1->image, 0, NULL);
-        psFitsClose(fits);
-
-        if (mode == PM_SUBTRACTION_MODE_DUAL) {
+        if (mode == PM_SUBTRACTION_MODE_1 || mode == PM_SUBTRACTION_MODE_DUAL) {
+            psFits *fits = psFitsOpen("convolved1.fits", "w");
+            psFitsWriteImage(fits, NULL, conv1->image, 0, NULL);
+            psFitsClose(fits);
+        }
+
+        if (mode == PM_SUBTRACTION_MODE_2 || mode == PM_SUBTRACTION_MODE_DUAL) {
             psFits *fits = psFitsOpen("convolved2.fits", "w");
             psFitsWriteImage(fits, NULL, conv2->image, 0, NULL);
@@ -621,5 +627,4 @@
             continue;
         }
-        mask->data.PS_TYPE_MASK_DATA[i] = 0;
 
         // Widths of stars
@@ -632,4 +637,5 @@
         } else {
             ratios->data.F32[i] = (float)width1 / (float)width2;
+            mask->data.PS_TYPE_MASK_DATA[i] = 0;
         }
     }
