Index: trunk/psModules/src/imcombine/pmSubtractionStamps.c
===================================================================
--- trunk/psModules/src/imcombine/pmSubtractionStamps.c	(revision 13378)
+++ trunk/psModules/src/imcombine/pmSubtractionStamps.c	(revision 13510)
@@ -60,5 +60,5 @@
     PS_ASSERT_INT_LARGER_THAN(image->numRows, 2 * border, NULL);
 
-    maskVal |= used;                    // Make sure we don't get stamps we've already used
+    psMaskType badCentral = maskVal | used; // For central pixel of stamp, don't get a stamp already used
     int xNumStamps = (image->numCols - 2 * border) / spacing + 1; // Number of stamps in x
     int yNumStamps = (image->numRows - 2 * border) / spacing + 1; // Number of stamps in y
@@ -107,17 +107,17 @@
                         if (image->data.F32[y][x] > fluxBest) {
                             bool ok = true;
-                            if (mask) {
-                                // Check kernel footprint for bad pixels
-                                if (mask->data.PS_TYPE_MASK_DATA[y][x] & maskVal) {
-                                    ok = false;
-                                } else {
-                                    for (int v = -border; v <= border && ok; v++) {
-                                        for (int u = -border; u <= border && ok; u++) {
-                                            if (mask->data.PS_TYPE_MASK_DATA[y + v][x + u] & maskVal) {
-                                                ok = false;
-#if 0
+                            // Check kernel footprint for bad pixels
+                            if (mask && (mask->data.PS_TYPE_MASK_DATA[y][x] & badCentral)) {
+                                ok = false;
+                            } else {
+                                for (int v = -border; v <= border && ok; v++) {
+                                    for (int u = -border; u <= border && ok; u++) {
+                                        if ((mask &&
+                                             (mask->data.PS_TYPE_MASK_DATA[y + v][x + u] & maskVal)) ||
+                                            !isfinite(image->data.F32[y + v][x + u])) {
+                                            ok = false;
+                                            if (mask) {
                                                 // Mark it so we don't have to look so hard next time
-                                                mask->data.PS_TYPE_MASK_DATA[y][x] |= maskVal;
-#endif
+                                                mask->data.PS_TYPE_MASK_DATA[y][x] |= used;
                                             }
                                         }
