Index: trunk/psModules/src/imcombine/pmSubtraction.c
===================================================================
--- trunk/psModules/src/imcombine/pmSubtraction.c	(revision 16479)
+++ trunk/psModules/src/imcombine/pmSubtraction.c	(revision 16604)
@@ -3,7 +3,4 @@
  *  @author Paul Price, IfA
  *  @author GLG, MHPCC
- *
- *  @version $Revision: 1.80 $ $Name: not supported by cvs2svn $
- *  @date $Date: 2008-02-14 23:33:09 $
  *
  *  Copyright 2004-2007 Institute for Astronomy, University of Hawaii
@@ -645,5 +642,5 @@
 bool pmSubtractionConvolve(pmReadout *out1, pmReadout *out2, const pmReadout *ro1, const pmReadout *ro2,
                            const psImage *subMask, psMaskType blank, const psRegion *region,
-                           const pmSubtractionKernels *kernels, bool useFFT)
+                           const pmSubtractionKernels *kernels, bool doBG, bool useFFT)
 {
     PS_ASSERT_PTR_NON_NULL(out1, false);
@@ -707,21 +704,20 @@
     }
 
-    psImage *image, *weight;            // Image and weight map to convolve
+    const pmReadout *source;            // Source for image parameters
     switch (kernels->mode) {
       case PM_SUBTRACTION_MODE_TARGET:
       case PM_SUBTRACTION_MODE_1:
       case PM_SUBTRACTION_MODE_DUAL:
-        image = ro1->image;
-        weight = ro1->weight;
+        source = ro1;
         break;
       case PM_SUBTRACTION_MODE_2:
-        image = ro2->image;
-        weight = ro2->weight;
+        source = ro2;
         break;
       default:
         psAbort("Unsupported subtraction mode: %x", kernels->mode);
     }
-
-    int numCols = ro1->image->numCols, numRows = ro1->image->numRows; // Image dimensions
+    psImage *image = source->image, *weight = source->weight; // Image and weight map to convolve
+    int numCols = image->numCols, numRows = image->numRows; // Image dimensions
+    int x0 = source->col0, y0 = source->row0; // Image offset
 
     psImage *convImage1 = out1->image;   // Convolved image
@@ -815,6 +811,6 @@
             // (with the stamps) that it does not vary rapidly on this scale.
             polyValues = p_pmSubtractionPolynomial(polyValues, kernels->spatialOrder, xNorm, yNorm);
-            float background = p_pmSubtractionSolutionBackground(kernels, polyValues); // Background term
-
+            float background = doBG ? p_pmSubtractionSolutionBackground(kernels, polyValues) :
+                0.0; // Background term
             psRegion subRegion = psRegionSet(i, xSubMax, j, ySubMax); // Sub-region to convolve
 
