Index: trunk/psModules/src/imcombine/pmSubtractionKernels.c
===================================================================
--- trunk/psModules/src/imcombine/pmSubtractionKernels.c	(revision 13389)
+++ trunk/psModules/src/imcombine/pmSubtractionKernels.c	(revision 13390)
@@ -137,4 +137,12 @@
                 }
 
+#if 0
+                // Subtract a particular kernel in order to preserve photometric calibration across image
+                if (spatialOrder > 0 && index != kernels->subIndex) {
+                    psKernel *subKernel = kernels->preCalc->data[kernels->subIndex]; // Kernel to subtract
+                    (void)psBinaryOp(preCalc->image, preCalc->image, "-", subKernel->image);
+                }
+#endif
+
                 // Iterate over spatial order.  This loop creates the terms for
                 // x^xOrder * y^yOrder  such that (xOrder+yOrder) <= spatialOrder.
@@ -153,14 +161,4 @@
                 }
 
-
-                if (psTraceGetLevel("psModules.imcombine.kernel") >= 10) {
-                    psString kernelName = NULL;
-                    psStringAppend(&kernelName, "kernel%d.fits", index);
-                    psFits *kernelFile = psFitsOpen(kernelName, "w");
-                    psFree(kernelName);
-                    psFitsWriteImage(kernelFile, NULL, preCalc->image, 0, NULL);
-                    psFitsClose(kernelFile);
-                }
-
                 psFree(preCalc);        // Drop reference
             }
@@ -168,5 +166,4 @@
     }
 
-    // Subtract a particular kernel in order to preserve photometric calibration across image
     kernels->subIndex = 0;
     assert(kernels->u->data.S32[kernels->subIndex] == 0 &&
@@ -175,14 +172,15 @@
            kernels->yOrder->data.S32[kernels->subIndex] == 0);
 
-    psKernel *subKernel = kernels->preCalc->data[kernels->subIndex]; // Kernel to subtract
-    for (int i = 0; i < kernels->subIndex; i++) {
-        psKernel *kernel = kernels->preCalc->data[i]; // Kernel of interest
-        (void)psBinaryOp(kernel->image, kernel->image, "-", subKernel->image);
-    }
-    for (int i = kernels->subIndex + 1; i < num; i++) {
-        psKernel *kernel = kernels->preCalc->data[i]; // Kernel of interest
-        (void)psBinaryOp(kernel->image, kernel->image, "-", subKernel->image);
-    }
-
+    if (psTraceGetLevel("psModules.imcombine.kernel") >= 10) {
+        for (int i = 0; i < num; i++) {
+            psKernel *kernel = kernels->preCalc->data[i]; // Kernel of interest
+            psString kernelName = NULL;
+            psStringAppend(&kernelName, "kernel%03d.fits", i);
+            psFits *kernelFile = psFitsOpen(kernelName, "w");
+            psFree(kernelName);
+            psFitsWriteImage(kernelFile, NULL, kernel->image, 0, NULL);
+            psFitsClose(kernelFile);
+        }
+    }
 
     return kernels;
