Index: /trunk/psModules/src/imcombine/pmSubtraction.c
===================================================================
--- /trunk/psModules/src/imcombine/pmSubtraction.c	(revision 14539)
+++ /trunk/psModules/src/imcombine/pmSubtraction.c	(revision 14540)
@@ -4,6 +4,6 @@
  *  @author GLG, MHPCC
  *
- *  @version $Revision: 1.41 $ $Name: not supported by cvs2svn $
- *  @date $Date: 2007-08-16 03:58:29 $
+ *  @version $Revision: 1.42 $ $Name: not supported by cvs2svn $
+ *  @date $Date: 2007-08-17 01:50:50 $
  *
  *  Copyright 2004-2007 Institute for Astronomy, University of Hawaii
@@ -202,5 +202,5 @@
                   kernel->kernel[v][u] += kernelWeighting(poly->data.F32[j], varianceWeighting) * value;
               }
-              kernel->kernel[0][0] += kernelWeighting(num, varianceWeighting) * subValue;
+              // Photometric scaling is built into the kernel --- no subtraction!
               break;
           }
@@ -301,6 +301,6 @@
               sum += image->kernel[y + v][x + u] * poly->data.F32[j];
           }
-          // The (0,0) kernel is subtracted from other kernels to preserve photometric scaling
-          return sum - num * image->kernel[y][x];
+          // Photometric scaling is built into the kernel --- no subtraction!
+          return sum;
       }
       default:
Index: /trunk/psModules/src/imcombine/pmSubtractionKernels.c
===================================================================
--- /trunk/psModules/src/imcombine/pmSubtractionKernels.c	(revision 14539)
+++ /trunk/psModules/src/imcombine/pmSubtractionKernels.c	(revision 14540)
@@ -526,6 +526,6 @@
     for (int i = 0, index = 0; i < numRings + 1; i++) {
 
-        float lower2;           // Lower limit of radius^2
-        float upper2;           // Upper limit of radius^2
+        float lower2;                   // Lower limit of radius^2
+        float upper2;                   // Upper limit of radius^2
         if (i == 0) {
             lower2 = 0;
@@ -599,4 +599,12 @@
                     if (uOrder % 2 == 0 && vOrder % 2 == 0) {
                         psBinaryOp(poly, poly, "*", psScalarAlloc(1.0 / norm, PS_TYPE_F32));
+                        uCoords->data.S32[j] = 0;
+                        vCoords->data.S32[j] = 0;
+                        poly->data.F32[j] = -1.0;
+                        psVectorExtend(uCoords, RINGS_BUFFER, 1);
+                        psVectorExtend(vCoords, RINGS_BUFFER, 1);
+                        psVectorExtend(poly, RINGS_BUFFER, 1);
+                    } else {
+                        psBinaryOp(poly, poly, "*", psScalarAlloc(1.0 / (float)j, PS_TYPE_F32));
                     }
                 }
