diff --git a/bfps/cpp/rFFTW_interpolator.cpp b/bfps/cpp/rFFTW_interpolator.cpp
index fb0cc7ef671feb81e65a1658b41503f78f6ea440..c7cde735c89f8345bbd30a9d97791cf62d930960 100644
--- a/bfps/cpp/rFFTW_interpolator.cpp
+++ b/bfps/cpp/rFFTW_interpolator.cpp
@@ -38,15 +38,10 @@ rFFTW_interpolator<rnumber, interp_neighbours>::rFFTW_interpolator(
     this->field_size = 2*fs->cd->local_size;
     this->compute_beta = BETA_POLYS;
     if (sizeof(rnumber) == 4)
-    {
         this->f0 = (rnumber*)((void*)fftwf_alloc_real(this->field_size));
-        this->f1 = (rnumber*)((void*)fftwf_alloc_real(this->field_size));
-    }
     else if (sizeof(rnumber) == 8)
-    {
         this->f0 = (rnumber*)((void*)fftw_alloc_real(this->field_size));
-        this->f1 = (rnumber*)((void*)fftw_alloc_real(this->field_size));
-    }
+    this->f1 = this->f0;
     this->temp = this->f1;
 
     // compute dx, dy, dz;
@@ -89,15 +84,9 @@ template <class rnumber, int interp_neighbours>
 rFFTW_interpolator<rnumber, interp_neighbours>::~rFFTW_interpolator()
 {
     if (sizeof(rnumber) == 4)
-    {
         fftwf_free((float*)((void*)this->f0));
-        fftwf_free((float*)((void*)this->f1));
-    }
     else if (sizeof(rnumber) == 8)
-    {
         fftw_free((double*)((void*)this->f0));
-        fftw_free((double*)((void*)this->f1));
-    }
     delete[] this->lbound;
     delete[] this->ubound;
 }
@@ -105,12 +94,6 @@ rFFTW_interpolator<rnumber, interp_neighbours>::~rFFTW_interpolator()
 template <class rnumber, int interp_neighbours>
 int rFFTW_interpolator<rnumber, interp_neighbours>::read_rFFTW(void *void_src)
 {
-    /* first, roll fields */
-    rnumber *tmp = this->f0;
-    this->f0 = this->f1;
-    this->f1 = tmp;
-    this->temp = this->f0;
-    /* now do regular things */
     rnumber *src = (rnumber*)void_src;
     rnumber *dst = this->f1;
     /* do big copy of middle stuff */
@@ -214,12 +197,12 @@ void rFFTW_interpolator<rnumber, interp_neighbours>::operator()(
                                          bigix)*3;
                     for (int c=0; c<3; c++)
                     {
-                        dest[c] += (this->f0[tindex+c]*(1-t) + t*this->f1[tindex+c])*(bz[iz+interp_neighbours]*
-                                                                                      by[iy+interp_neighbours]*
-                                                                                      bx[ix+interp_neighbours]);
-                        tval[c] += (this->f0[tindex+c]*(1-t) + t*this->f1[tindex+c])*(bz[iz+interp_neighbours]*
-                                                                                      by[iy+interp_neighbours]*
-                                                                                      bx[ix+interp_neighbours]);
+                        dest[c] += this->f1[tindex+c]*(bz[iz+interp_neighbours]*
+                                                       by[iy+interp_neighbours]*
+                                                       bx[ix+interp_neighbours]);
+                        tval[c] += this->f1[tindex+c]*(bz[iz+interp_neighbours]*
+                                                       by[iy+interp_neighbours]*
+                                                       bx[ix+interp_neighbours]);
                     }
                 }
             }