Index: branches/eam_branches/ipp-20101205/psModules/src/imcombine/pmSubtractionMatch.c
===================================================================
--- branches/eam_branches/ipp-20101205/psModules/src/imcombine/pmSubtractionMatch.c	(revision 30333)
+++ branches/eam_branches/ipp-20101205/psModules/src/imcombine/pmSubtractionMatch.c	(revision 30334)
@@ -690,4 +690,32 @@
 	    }
 
+	    // check on the kernel scaling -- if the kron-based radial moments are very different, adjust to match them
+	    { 
+		float fwhm1;
+		float fwhm2;
+		pmSubtractionGetFWHMs(&fwhm1, &fwhm2);
+		psAssert(isfinite(fwhm1), "fwhm 1 not set");
+		psAssert(isfinite(fwhm2), "fwhm 2 not set");
+
+		// XXX this is BAD: depends on the relationship below:
+		// stamps->normWindow1 = 2.75*R1;
+		// stamps->normWindow2 = 2.75*R2;
+		float radMoment1 = stamps->normWindow1 / 2.75;
+		float radMoment2 = stamps->normWindow2 / 2.75;
+
+		float maxFWHM = PS_MAX(fwhm1, fwhm2);
+		float maxRadial = PS_MAX(radMoment1, radMoment2);
+	    
+		if (fabs(2.0*(maxFWHM - maxRadial)/(maxFWHM + maxRadial)) > 0.25) {
+
+		    float scale = maxRadial / maxFWHM;
+		    psLogMsg ("psModules.imcombine", PS_LOG_INFO, "Kron and FWHM scales are quite different, re-scale by %f to use Kron", scale);
+		    
+		    for (int i = 0; i < isisWidths->n; i++) {
+			isisWidths->data.F32[i] *= scale;
+		    }
+		}
+	    }
+
 	    // Define kernel basis functions
 	    if (optimum && (type == PM_SUBTRACTION_KERNEL_ISIS || type == PM_SUBTRACTION_KERNEL_GUNK)) {
Index: branches/eam_branches/ipp-20101205/psModules/src/imcombine/pmSubtractionStamps.c
===================================================================
--- branches/eam_branches/ipp-20101205/psModules/src/imcombine/pmSubtractionStamps.c	(revision 30333)
+++ branches/eam_branches/ipp-20101205/psModules/src/imcombine/pmSubtractionStamps.c	(revision 30334)
@@ -893,7 +893,12 @@
     float R2 = Sr2 / Sf2;
 
+    // Compare the Kron Radii (R1 & R2) to above to the FWHMs : if they are too discrepant, we will need to rescale
+    psLogMsg ("psModules.imcombine", PS_LOG_DETAIL, "Kron Radii vs FWHMs 1: fwhm: %f, kron %f\n", fwhm1, R1);
+    psLogMsg ("psModules.imcombine", PS_LOG_DETAIL, "Kron Radii vs FWHMs 2: fwhm: %f, kron %f\n", fwhm2, R2);
+
+    // XXX CAREFUL : in pmSubtractionMatch.c:703, we rely on this factor of 2.75..
     stamps->normWindow1 = 2.75*R1;
     stamps->normWindow2 = 2.75*R2;
-    psLogMsg ("psModules.imcombine", PS_LOG_DETAIL, "Kron Radii: %f for 1, %f for 2\n", stamps->normWindow1, stamps->normWindow2);
+    psLogMsg ("psModules.imcombine", PS_LOG_DETAIL, "Windows from Kron Radii: %f for 1, %f for 2\n", stamps->normWindow1, stamps->normWindow2);
 
     // if the calculated normWindows are too large, we will fall off the stamps.  In this case, we need to try again.
