Index: branches/pap/psModules/src/imcombine/pmSubtractionKernels.c
===================================================================
--- branches/pap/psModules/src/imcombine/pmSubtractionKernels.c	(revision 26707)
+++ branches/pap/psModules/src/imcombine/pmSubtractionKernels.c	(revision 26717)
@@ -15,4 +15,6 @@
 
 #define RINGS_BUFFER 10                 // Buffer size for RINGS data
+
+#define NORM_WIDTH 7.5
 
 // Free function for pmSubtractionKernels
@@ -30,4 +32,5 @@
     psFree(kernels->solution2);
     psFree(kernels->sampleStamps);
+    psFree(kernels->norm);
 }
 
@@ -242,5 +245,10 @@
 
     if (zeroNull) {
-        preCalc->kernel->kernel[0][0] -= 1.0;
+        //        preCalc->kernel->kernel[0][0] -= 1.0;
+        for (int v = -size; v <= size; v++) {
+            for (int u = -size; u <= size; u++) {
+                preCalc->kernel->kernel[v][u] -= kernels->norm->kernel[v][u];
+            }
+        }
     }
 
@@ -582,4 +590,19 @@
     kernels->fMinResMean  = NAN;
     kernels->fMinResStdev = NAN;
+
+    kernels->norm = psKernelAlloc(-size, size, -size, size);
+    double sumNorm = 0.0;
+    float sigma = NORM_WIDTH / 2.35;
+    for (int y = -size; y <= size; y++) {
+        for (int x = -size; x <= size; x++) {
+            float z = 0.5 * (PS_SQR(x) + PS_SQR(y)) / PS_SQR(sigma);
+            sumNorm += kernels->norm->kernel[y][x] = expf(-z);
+        }
+    }
+    for (int y = -size; y <= size; y++) {
+        for (int x = -size; x <= size; x++) {
+            kernels->norm->kernel[y][x] /= sumNorm;
+        }
+    }
 
     return kernels;
