diff --git a/Geo/MElementCut.cpp b/Geo/MElementCut.cpp
index 69d2b66d19aa312bf115472393bd4c5dbc60a9ec..ab10028bd80045e186dcb876831ca1c0fca51dd3 100644
--- a/Geo/MElementCut.cpp
+++ b/Geo/MElementCut.cpp
@@ -566,10 +566,19 @@ static void elementSplitMesh(MElement *e, fullMatrix<double> &verticesLs,
 
   MElement *copy = e->copy(vertexMap, newParents, newDomains);
 
-  double lsMean = 0.;
-  for(int k = 0; k < e->getNumVertices(); k++)
-    lsMean += verticesLs(0, e->getVertex(k)->getIndex());
-  int lsTag = (lsMean < 0) ? 1 : -1;
+  //split acording to center of gravity
+  // double lsMean = 0.;
+  // for(int k = 0; k < e->getNumVertices(); k++)
+  //   lsMean += verticesLs(0, e->getVertex(k)->getIndex());
+  // int lsTag = (lsMean < 0) ? 1 : -1;
+
+  //EMI : better for embedded dirichlet with smoothed properties
+  //split according to values of vertices (keep +)
+  int lsTag = 1; //negative ls
+  for(int k = 0; k < e->getNumVertices(); k++){
+   double val = verticesLs(0, e->getVertex(k)->getIndex());
+   if (val > 0.0) { lsTag = -1; break; }
+  }
 
   switch (eType) {
   case MSH_TET_4 :