     int myConvU, myConvV, myGridU, myGridV, u, v;
     u = uvo_shared[i].u;
     v = uvo_shared[i].v;
-    myConvU = myU - u % max_supp;
+    myConvU = myU - off_shared[i].x;
     if (myConvU < 0) myConvU += max_supp;
-    myConvV = myV - v % max_supp;
+    myConvV = myV - off_shared[i].y;
     if (myConvV < 0) myConvV += max_supp;
     // This translates points by max_supp/2
     // returning them back to normal (they were translates by -max_supp/2 before)

  ) {
  __shared__ Pregridded uvo_shared[timesteps * channels];
  __shared__ Double4c vis_shared[timesteps * channels];
  
  loadIntoSharedMem<
      over

    , vis
    , uvo_shared
    , vis_shared
    , off_shared
    );
  syncthreads();
  gridKernel_scatter_kernel<
