diff --git a/Mesh/delaunay3d.cpp b/Mesh/delaunay3d.cpp
index d4f341eecc5e4027436bee3c6192b2785383a5b2..c97434a7456f85be18ae4c3a3784b48886d9f250 100644
--- a/Mesh/delaunay3d.cpp
+++ b/Mesh/delaunay3d.cpp
@@ -517,7 +517,7 @@ static Tet* randomTet (int thread,  tetContainer &allocator ){
 }
 
 
-//#define _VERBOSE 1
+#define _VERBOSE 1
 void delaunayTrgl (const unsigned int numThreads, 
 		   const unsigned int NPTS_AT_ONCE, 
 		   unsigned int Npts, 
@@ -528,7 +528,7 @@ void delaunayTrgl (const unsigned int numThreads,
   double totCavityGlob=0;
 #endif
 
-  //  checkLocalDelaunayness(T, "initial");
+  //  checkLocalDelaunayness(allocator, 0, "initial");
 
   std::vector<int> invalidCavities(numThreads);
   std::vector<int> cacheMisses(numThreads, 0);
@@ -552,6 +552,7 @@ void delaunayTrgl (const unsigned int numThreads,
     double totCavity=0;
     std::vector<cavityContainer> cavity(NPTS_AT_ONCE);
     std::vector<connContainer> bnd(NPTS_AT_ONCE);
+    std::vector<bool> ok(NPTS_AT_ONCE);
     connContainer faceToTet;
     std::vector<Tet*> Choice(NPTS_AT_ONCE);
     for (unsigned int K=0;K<NPTS_AT_ONCE;K++)Choice[K] = randomTet (myThread, allocator);
@@ -631,7 +632,6 @@ void delaunayTrgl (const unsigned int numThreads,
 
 #pragma omp barrier
 
-      std::vector<bool> ok(NPTS_AT_ONCE);
       for (unsigned int K=0; K< NPTS_AT_ONCE; K++) {
 	if (!vToAdd[K])ok[K]=false;
 	else ok[K] = canWeProcessCavity (cavity[K], myThread, K);
@@ -648,13 +648,7 @@ void delaunayTrgl (const unsigned int numThreads,
 	  Choice[K] = cavityK[0];
 	  for (unsigned int i=0; i<bSize; i++) {
 	    // reuse memory slots of invalid elements
-	    Tet *t;
-	    if (i < cSize) {
-	      t = cavityK[i];
-	    }
-	    else {
-	      t = allocator.newTet(myThread);
-	    }
+	    Tet *t = (i < cSize)? cavityK[i] :  allocator.newTet(myThread);
 	    if (i < cSize && t->V[0]->_thread != myThread)cacheMisses[myThread]++;
 	    t->setVerticesNoTest (bndK[i].f.V[0], bndK[i].f.V[1], bndK[i].f.V[2], vToAdd[K]);
 	    Tet *neigh = bndK[i].t;
@@ -672,7 +666,7 @@ void delaunayTrgl (const unsigned int numThreads,
 	    computeAdjacencies (t,3,faceToTet);
 	  }
 	  for (unsigned int i=bSize; i<cSize; i++) {
-	    cavityK[i]->V[0] = cavityK[i]->V[1] = cavityK[i]->V[2] = cavityK[i]->V[3] = NULL;
+	    cavityK[i]->V[0] = NULL;
 	  }
 	}
       }
diff --git a/Mesh/delaunay_refinement.cpp b/Mesh/delaunay_refinement.cpp
index b7598f82a3a919a3f3824df9d9b67049e60c6c6d..0628eb7745225cd9d9efc4408b69316e33b43d27 100644
--- a/Mesh/delaunay_refinement.cpp
+++ b/Mesh/delaunay_refinement.cpp
@@ -140,9 +140,9 @@ void saturateEdge (Edge &e, std::vector<Vertex*> &S, double (*f)(const SPoint3 &
       else {
 	SPoint3 p = p1 * (1.-t) + p2*t;
 	double lc = e.first->lc() * (1.-t) + e.second->lc()*t;
-	const double dx = 1.e-10 * (double) rand() / RAND_MAX;
-	const double dy = 1.e-10 * (double) rand() / RAND_MAX;
-	const double dz = 1.e-10 * (double) rand() / RAND_MAX;
+	const double dx = 1.e-12 * (double) rand() / RAND_MAX;
+	const double dy = 1.e-12 * (double) rand() / RAND_MAX;
+	const double dz = 1.e-12 * (double) rand() / RAND_MAX;
 	S.push_back(new Vertex(p.x()+dx,p.y()+dy,p.z()+dz,lc));
 	L += interval;
       }