diff --git a/Mesh/meshGFaceLloyd.cpp b/Mesh/meshGFaceLloyd.cpp
index a449917dea305cfce7aa3fa6689efd820df61c3b..bc889b52819b1073847b3ce6f8e0b6571e81fc9b 100644
--- a/Mesh/meshGFaceLloyd.cpp
+++ b/Mesh/meshGFaceLloyd.cpp
@@ -253,7 +253,7 @@ void smoothing::optimize_face(GFace* gf){
   w.set_triangulator(&triangulator);
   w.set_octree(octree);
 
-  if(num_interior>0){
+  if(num_interior>1){
     minlbfgscreate(2*num_interior,4,x,state);
     minlbfgssetcond(state,epsg,epsf,epsx,maxits);
     minlbfgsoptimize(state,callback,NULL,&w);
@@ -516,7 +516,7 @@ SPoint2 lpcvt::intersection(SPoint2 p1,SPoint2 p2,SPoint2 p3,SPoint2 p4,bool& fl
   y3 = p3.y();
   x4 = p4.x();
   y4 = p4.y();
-  e = 0.000001;
+  e = 0.00000000001;
   denom = (y4-y3)*(x2-x1) - (x4-x3)*(y2-y1);
   if(fabs(denom)<e){
     flag = 0;
@@ -569,14 +569,12 @@ SPoint2 lpcvt::seed(DocRecord& triangulator,GFace* gf){
 	  for(j=0;j<num;j++){
 	    index1 = triangulator._adjacencies[i].t[j];
 		index2 = triangulator._adjacencies[i].t[(j+1)%num];
-		if(interior(triangulator,gf,index1) && interior(triangulator,gf,index2)){
-		  x0 = convert(triangulator,i);
-		  x1 = convert(triangulator,index1);
-		  x2 = convert(triangulator,index2);
-		  x = (x0.x() + x1.x() + x2.x())/3.0;
-		  y = (x0.y() + x1.y() + x2.y())/3.0;
-		  return SPoint2(x,y);
-		}
+		x0 = convert(triangulator,i);
+		x1 = convert(triangulator,index1);
+		x2 = convert(triangulator,index2);
+		x = (x0.x() + x1.x() + x2.x())/3.0;
+		y = (x0.y() + x1.y() + x2.y())/3.0;
+		return SPoint2(x,y);
 	  }
 	}
   }