diff --git a/nifty_gridder.cc b/nifty_gridder.cc
index 50fe3bd94fa65d5599c37641a02afcbd6df8903b..f597b1f93eed1f5066682634b0f770322e5001a4 100644
--- a/nifty_gridder.cc
+++ b/nifty_gridder.cc
@@ -1474,7 +1474,7 @@ template<typename T> pyarr_c<complex<T>> vis2dirty_wstack(const Baselines<T> &ba
   size_t nvis = size_t(vis_.shape(0));
   checkArray(idx_, "idx", {nvis});
   auto vis=vis_.template unchecked<1>();
-  auto idx = idx_.template unchecked<1>();
+  auto idx=idx_.template unchecked<1>();
 
   // determine w values for every visibility, and min/max w;
   T wmin=T(1e38), wmax=T(-1e38);
@@ -1534,7 +1534,8 @@ cout << "working on w plane #" << iw << endl;
       if (abs(wcur-wval[ipart]) < dwmax)
         {
         double x=2./(w_supp*dw)*abs(wcur-wval[ipart]);
-        vis_loc[cnt] = vis[ipart]*exp(beta*sqrt(1.-x*x));
+myassert(cnt<nvis_plane[iw],"must not happen");
+        vis_loc[cnt] = vis[ipart]*exp(beta*(sqrt(1.-x*x)-1.));
         idx_loc[cnt] = idx[ipart];
         ++cnt;
         }