Index: trunk/psModules/src/imcombine/pmSubtractionMatch.c
===================================================================
--- trunk/psModules/src/imcombine/pmSubtractionMatch.c	(revision 18180)
+++ trunk/psModules/src/imcombine/pmSubtractionMatch.c	(revision 18181)
@@ -89,6 +89,24 @@
 
 
-
-
+// Record the variance factor in a readout
+static bool recordVarianceFactor(pmReadout *ro, // Readout of interest
+                                 float varFactor, // Variance factor
+                                 const psRegion *region // Region of interest
+                                 )
+{
+    varFactor *= (region->x1 - region->x1 + 1) * (region->y1 * region->y1 + 1) /
+        (ro->image->numCols * ro->image->numRows);
+
+    psMetadataItem *vfItem = psMetadataLookup(ro->analysis, PM_SUBTRACTION_ANALYSIS_VARFACTOR);
+    if (vfItem) {
+        psAssert(vfItem->type == PS_TYPE_F32, "Should be the type we said.");
+        vfItem->data.F32 += varFactor;
+    } else {
+        psMetadataAddF32(ro->analysis, PS_LIST_TAIL, PM_SUBTRACTION_ANALYSIS_VARFACTOR, 0,
+                         "Variance factor weighted by the area", varFactor);
+    }
+
+    return true;
+}
 
 bool pmSubtractionMatch(pmReadout *conv1, pmReadout *conv2, const pmReadout *ro1, const pmReadout *ro2,
@@ -507,4 +525,28 @@
                 }
             }
+
+
+            // Set the variance factors
+            float xMid = 0.5 * (region->x0 + region->x1); // Average x position
+            float yMid = 0.5 * (region->y0 + region->y1); // Average y position
+            switch (mode) {
+              case PM_SUBTRACTION_MODE_1: {
+                  recordVarianceFactor(conv1, pmSubtractionVarianceFactor(kernels, xMid, yMid, false),
+                                       region);
+                  break;
+              }
+              case PM_SUBTRACTION_MODE_2:
+                recordVarianceFactor(conv1, pmSubtractionVarianceFactor(kernels, xMid, yMid, false),
+                                     region);
+                break;
+              case PM_SUBTRACTION_MODE_DUAL:
+                recordVarianceFactor(conv1, pmSubtractionVarianceFactor(kernels, xMid, yMid, false),
+                                     region);
+                recordVarianceFactor(conv2, pmSubtractionVarianceFactor(kernels, xMid, yMid, true),
+                                     region);
+                break;
+              default:
+                psAbort("Should never reach here.");
+            }
         }
     }
Index: trunk/psModules/src/imcombine/pmSubtractionMatch.h
===================================================================
--- trunk/psModules/src/imcombine/pmSubtractionMatch.h	(revision 18180)
+++ trunk/psModules/src/imcombine/pmSubtractionMatch.h	(revision 18181)
@@ -14,4 +14,5 @@
 #define PM_SUBTRACTION_ANALYSIS_STAMPS_RMS "SUBTRACTION.RMS" // Name of stamp rms in the analysis metadata
 #define PM_SUBTRACTION_ANALYSIS_STAMPS_NUM "SUBTRACTION.NUM"// Name of the number of stamps in the analysis MD
+#define PM_SUBTRACTION_ANALYSIS_VARFACTOR "SUBTRACTION.VARFACTOR"// Name of variance factor in the analysis MD
 
 /// Match two images
