Index: /trunk/psModules/src/imcombine/pmSubtractionAnalysis.c
===================================================================
--- /trunk/psModules/src/imcombine/pmSubtractionAnalysis.c	(revision 21148)
+++ /trunk/psModules/src/imcombine/pmSubtractionAnalysis.c	(revision 21149)
@@ -165,4 +165,42 @@
     UPDATE_VARFACTOR(vf2, PM_SUBTRACTION_ANALYSIS_VARFACTOR_2);
 
+    // Kernel shape
+    {
+        psImage *image = pmSubtractionKernelImage(kernels, 0.5, 0.5, false); // Image of the kernel
+        if (!image) {
+            psError(PS_ERR_UNKNOWN, false, "Unable to generate image of kernel.");
+            return false;
+        }
+        int size = kernels->size;       // Half-size of kernel
+        int fullSize = 2 * size + 1;    // Full size of kernel
+        float norm = 0.0;               // Normalisation (kernel sum)
+        for (int y = 0; y < fullSize; y++) {
+            for (int x = 0; x < fullSize; x++) {
+                norm += image->data.F32[y][x];
+            }
+        }
+        float max = -INFINITY;          // Maximum fraction
+        for (int r = 1; r < size; r++) {
+            unsigned long r2 = PS_SQR(r); // r^2
+            float sum = 0.0;            // Sum within circle
+            for (int y = 0, v = -size; y < fullSize; y++, v++) {
+                unsigned long v2 = PS_SQR(v); // y^2
+                for (int x = 0, u = -size; x < fullSize; x++, u++) {
+                    unsigned long u2 = PS_SQR(u); // u^2
+                    if (u2 + v2 <= r2) {
+                        sum += image->data.F32[y][x];
+                    }
+                }
+            }
+            float frac = sum / norm;    // Fraction of flux moving towards centre
+            psTrace("psModules.imcombine", 5, "Deconvolution fraction at %d: %f\n", r, frac);
+            max = PS_MAX(max, frac);
+        }
+        psFree(image);
+
+        psMetadataAddF32(analysis, PS_LIST_TAIL, PM_SUBTRACTION_ANALYSIS_DECONV_MAX,
+                         PS_META_DUPLICATE_OK, "Maximum deconvolution fraction", max);
+    }
+
     // Kernel moments
     {
Index: /trunk/psModules/src/imcombine/pmSubtractionAnalysis.h
===================================================================
--- /trunk/psModules/src/imcombine/pmSubtractionAnalysis.h	(revision 21148)
+++ /trunk/psModules/src/imcombine/pmSubtractionAnalysis.h	(revision 21149)
@@ -22,4 +22,5 @@
 #define PM_SUBTRACTION_ANALYSIS_MXY          "SUBTRACTION.MXY"          // Kernel moment in xy
 #define PM_SUBTRACTION_ANALYSIS_MYY          "SUBTRACTION.MYY"          // Kernel moment in yy
+#define PM_SUBTRACTION_ANALYSIS_DECONV_MAX   "SUBTRACTION.DECONV.MAX"   // Maximum deconvolution fraction
 
 // Derive QA information about the subtraction
Index: /trunk/psModules/src/imcombine/pmSubtractionMatch.c
===================================================================
--- /trunk/psModules/src/imcombine/pmSubtractionMatch.c	(revision 21148)
+++ /trunk/psModules/src/imcombine/pmSubtractionMatch.c	(revision 21149)
@@ -569,4 +569,6 @@
         ratios->data.F32[index] = (float)width1 / (float)width2;
         mask->data.PS_TYPE_MASK_DATA[index] = 0;
+        psTrace("psModules.imcombine", 3, "Stamp %d (%.1f,%.1f) widths: %d, %d --> %f\n",
+                index, stamp->x, stamp->y, width1, width2, ratios->data.F32[index]);
     }
 
@@ -680,4 +682,10 @@
     psFree(stats);
 
+
+    return PM_SUBTRACTION_MODE_2;
+
+
+    exit(1);
+
     return mode;
 }
