Index: trunk/psLib/src/imageops/psImageInterpolate.c
===================================================================
--- trunk/psLib/src/imageops/psImageInterpolate.c	(revision 19151)
+++ trunk/psLib/src/imageops/psImageInterpolate.c	(revision 19228)
@@ -7,6 +7,6 @@
  *  @author Paul Price, IfA
  *
- *  @version $Revision: 1.18 $ $Name: not supported by cvs2svn $
- *  @date $Date: 2008-08-21 01:12:44 $
+ *  @version $Revision: 1.19 $ $Name: not supported by cvs2svn $
+ *  @date $Date: 2008-08-27 01:54:01 $
  *
  *  Copyright 2004-2007 Institute for Astronomy, University of Hawaii
@@ -891,12 +891,15 @@
                               x, y, options->mode, false);
 
+    double sumKernel = 0.0;             // Sum of kernel
     double sumKernel2 = 0.0;            // Sum of kernel squares
     for (int j = 0; j < yNum; j++) {
         for (int i = 0; i < xNum; i++) {
-            sumKernel2 += PS_SQR(kernel[j][i]);
-        }
-    }
-
-    return sumKernel2;
+            float value = kernel[j][i]; // Value of kernel
+            sumKernel += value;
+            sumKernel2 += PS_SQR(value);
+        }
+    }
+
+    return sumKernel2 / PS_SQR(sumKernel);
 }
 
@@ -925,14 +928,20 @@
                                 xCentral, yCentral, x, y, options->mode, false);
 
+    double ySumKernel = 0.0;            // Sum of kernel in y
     double ySumKernel2 = 0.0;           // Sum of kernel squared in y
     for (int j = 0; j < yNum; j++) {
+        double xSumKernel = 0.0;        // Sum of kernel in x
         double xSumKernel2 = 0.0;       // Sum of kernel squared in x
         for (int i = 0; i < xNum; i++) {
-            xSumKernel2 += PS_SQR(xKernel[i]);
-        }
-        ySumKernel2 += xSumKernel2 * PS_SQR(yKernel[j]);
-    }
-
-    return ySumKernel2;
+            float value = xKernel[i];   // Value of kernel
+            xSumKernel += value;
+            xSumKernel2 += PS_SQR(value);
+        }
+        float value = yKernel[j];       // Value of kernel
+        ySumKernel += xSumKernel * value;
+        ySumKernel2 += xSumKernel2 * PS_SQR(value);
+    }
+
+    return ySumKernel2 / PS_SQR(ySumKernel);
 }
 
