diff --git a/Geo/MVertex.cpp b/Geo/MVertex.cpp
index 41770ebb2e58285c3d1188875c9a196ae6395e05..57eb825f3d62c14d60553e090f02feedf326ab11 100644
--- a/Geo/MVertex.cpp
+++ b/Geo/MVertex.cpp
@@ -357,20 +357,15 @@ bool reparamMeshVertexOnEdge(const MVertex *v, const GEdge *ge, double &param)
 {
   param = 1.e6;
   Range<double> bounds = ge->parBounds(0);
-  if(ge->getBeginVertex() && ge->getBeginVertex()->mesh_vertices[0] == v) 
+  if(ge->getBeginVertex() && ge->getBeginVertex()->mesh_vertices[0] == v)
     param = bounds.low();
-  else if(ge->getEndVertex() && ge->getEndVertex()->mesh_vertices[0] == v) 
+  else if(ge->getEndVertex() && ge->getEndVertex()->mesh_vertices[0] == v)
     param = bounds.high();
   else
+    v->getParameter(0, param);
+
+  if(param == 1.e6)
     param = ge->parFromPoint(SPoint3(v->x(), v->y(), v->z()));
-    
-    if (v->onWhat() == ge) {
-      const MEdgeVertex* ve = dynamic_cast<const MEdgeVertex*>(v);
-      if (!ve)  param = ge->parFromPoint(SPoint3(v->x(), v->y(), v->z()));
-      else      v->getParameter(0, param);
-    }
-    else
-      param = ge->parFromPoint(SPoint3(v->x(), v->y(), v->z()));
   
   if(param < 1.e6) return true;
   return false;