Index: /branches/pap_branch_20090128/psModules/src/imcombine/pmSubtraction.c
===================================================================
--- /branches/pap_branch_20090128/psModules/src/imcombine/pmSubtraction.c	(revision 21292)
+++ /branches/pap_branch_20090128/psModules/src/imcombine/pmSubtraction.c	(revision 21293)
@@ -915,5 +915,5 @@
 }
 
-psImage *pmSubtractionKernelImage(const pmSubtractionKernels *kernels, float x, float y, bool wantDual)
+psKernel *pmSubtractionKernel(const pmSubtractionKernels *kernels, float x, float y, bool wantDual)
 {
     PM_ASSERT_SUBTRACTION_KERNELS_NON_NULL(kernels, NULL);
@@ -922,12 +922,19 @@
     PS_ASSERT_FLOAT_WITHIN_RANGE(y, -1.0, 1.0, NULL);
 
-    // Precalulate polynomial values
-    psImage *polyValues = p_pmSubtractionPolynomial(NULL, kernels->spatialOrder, x, y);
-
-    // The appropriate kernel
-    psKernel *kernel = solvedKernel(NULL, kernels, polyValues, wantDual);
-
+    psImage *polyValues = p_pmSubtractionPolynomial(NULL, kernels->spatialOrder, x, y); // Solved polynomial
+    psKernel *kernel = solvedKernel(NULL, kernels, polyValues, wantDual); // The appropriate kernel
     psFree(polyValues);
 
+    return kernel;
+}
+
+psImage *pmSubtractionKernelImage(const pmSubtractionKernels *kernels, float x, float y, bool wantDual)
+{
+    PM_ASSERT_SUBTRACTION_KERNELS_NON_NULL(kernels, NULL);
+    PM_ASSERT_SUBTRACTION_KERNELS_SOLUTION(kernels, NULL);
+    PS_ASSERT_FLOAT_WITHIN_RANGE(x, -1.0, 1.0, NULL);
+    PS_ASSERT_FLOAT_WITHIN_RANGE(y, -1.0, 1.0, NULL);
+
+    psKernel *kernel = pmSubtractionKernel(kernels, x, y, wantDual); // Convolution kernel
     psImage *image = psMemIncrRefCounter(kernel->image); // Image of the kernel
     psFree(kernel);
Index: /branches/pap_branch_20090128/psModules/src/imcombine/pmSubtraction.h
===================================================================
--- /branches/pap_branch_20090128/psModules/src/imcombine/pmSubtraction.h	(revision 21292)
+++ /branches/pap_branch_20090128/psModules/src/imcombine/pmSubtraction.h	(revision 21293)
@@ -6,6 +6,6 @@
  * @author GLG, MHPCC
  *
- * @version $Revision: 1.35 $ $Name: not supported by cvs2svn $
- * @date $Date: 2009-01-27 06:39:38 $
+ * @version $Revision: 1.35.2.1 $ $Name: not supported by cvs2svn $
+ * @date $Date: 2009-02-04 22:26:42 $
  * Copyright 2004-207 Institute for Astronomy, University of Hawaii
  */
@@ -70,4 +70,10 @@
                               float sigmaRej, ///< Number of RMS deviations above zero at which to reject
                               int footprint ///< Half-size of stamp
+    );
+
+/// Generate the convolution kernel
+psKernel *pmSubtractionKernel(const pmSubtractionKernels *kernels, ///< Kernel parameters
+                              float x, float y, ///< Normalised position [-1,1] for which to generate image
+                              bool wantDual ///< Calculate for the dual kernel?
     );
 
