diff --git a/kernel.cc b/kernel.cc
index add270fa6ddcce862b18e295533297839d3da217..0cc024d8c28c349c3cd33dd27ed993c3ae16bdab 100644
--- a/kernel.cc
+++ b/kernel.cc
@@ -195,20 +195,14 @@ namespace MISCMATHS {
   {
     int widthx = (width - 1)/2;
     // kernel half-width  (i.e. range is +/- w)
-
     int ix0;
     ix0 = (int) floor(index);
     
-    static int wx=0;
-    static float *storex = 0;
-    if ( (wx!=widthx) || (storex==0) ) {
-	wx=widthx;
-        storex = new float[2*wx+1]; 
-        for (int d=-wx; d<=wx; d++) {
-          storex[d+wx] = kernelval((index-ix0+d),wx,userkernel);
-        }
-    }
-  
+    int wx(widthx);
+    vector<float> storex(2*wx+1);
+    for (int d=-wx; d<=wx; d++) 
+       storex[d+wx] = kernelval((index-ix0+d),wx,userkernel);
+
     float convsum=0.0, interpval=0.0, kersum=0.0;
     
     int xj;
@@ -216,8 +210,6 @@ namespace MISCMATHS {
       if (in_bounds(data, x1)) {
 	xj=ix0-x1+wx;
 	float kerfac = storex[xj];
-	//	cerr << "x1 = " << x1 << endl;
-	//      cerr << "data(x1) = " << data(x1) << endl;
 	convsum += data(x1) * kerfac;
 	kersum += kerfac;
       }
@@ -228,9 +220,6 @@ namespace MISCMATHS {
     } else {
       interpval = (float) extrapolate_1d(data, ix0);
     }
-
-    // cerr << "interpval = " << interpval << endl;
-
     return interpval;
   }