diff --git a/Geo/GModel.cpp b/Geo/GModel.cpp
index 37686ea6e07787540bba229811d739c18f92c68f..53ebd5c08d93867e82c01e5807b1d4c71bbc83ce 100644
--- a/Geo/GModel.cpp
+++ b/Geo/GModel.cpp
@@ -1029,26 +1029,33 @@ int GModel::removeDuplicateMeshVertices(double tolerance)
       for(int k = 0; k < e->getNumVertices(); k++){
         MVertex *v = e->getVertex(k);
         std::set<MVertex*, MVertexLessThanLexicographic>::iterator it = pos.find(v);
-        if(it != pos.end())
-          verts.push_back(*it);
-        else
-          Msg::Error("Could not find unique vertex (%g,%g,%g)", v->x(), v->y(), v->z());
+        if(it == pos.end()){
+          Msg::Info("Linear search for (%.16g, %.16g, %.16g)", v->x(), v->y(), v->z()); 
+          it = v->linearSearch(pos);
+          if(it == pos.end()){
+            Msg::Error("Could not find unique vertex (%.16g, %.16g, %.16g)", 
+                       v->x(), v->y(), v->z());
+            break;
+          }
+        }
+        verts.push_back(*it);
       }
-      MElementFactory factory;
-      MElement *e2 = factory.create(e->getTypeForMSH(), verts, e->getNum(),
-                                    e->getPartition());
-      switch(e2->getType()){
-      case TYPE_PNT: elements[0][entities[i]->tag()].push_back(e2); break;
-      case TYPE_LIN: elements[1][entities[i]->tag()].push_back(e2); break;
-      case TYPE_TRI: elements[2][entities[i]->tag()].push_back(e2); break;
-      case TYPE_QUA: elements[3][entities[i]->tag()].push_back(e2); break;
-      case TYPE_TET: elements[4][entities[i]->tag()].push_back(e2); break;
-      case TYPE_HEX: elements[5][entities[i]->tag()].push_back(e2); break;
-      case TYPE_PRI: elements[6][entities[i]->tag()].push_back(e2); break;
-      case TYPE_PYR: elements[7][entities[i]->tag()].push_back(e2); break;
-      case TYPE_POLYG: elements[8][entities[i]->tag()].push_back(e2); break;
-      case TYPE_POLYH: elements[9][entities[i]->tag()].push_back(e2); break;
-
+      if(verts.size() == e->getNumVertices()){
+        MElementFactory factory;
+        MElement *e2 = factory.create(e->getTypeForMSH(), verts, e->getNum(),
+                                      e->getPartition());
+        switch(e2->getType()){
+        case TYPE_PNT: elements[0][entities[i]->tag()].push_back(e2); break;
+        case TYPE_LIN: elements[1][entities[i]->tag()].push_back(e2); break;
+        case TYPE_TRI: elements[2][entities[i]->tag()].push_back(e2); break;
+        case TYPE_QUA: elements[3][entities[i]->tag()].push_back(e2); break;
+        case TYPE_TET: elements[4][entities[i]->tag()].push_back(e2); break;
+        case TYPE_HEX: elements[5][entities[i]->tag()].push_back(e2); break;
+        case TYPE_PRI: elements[6][entities[i]->tag()].push_back(e2); break;
+        case TYPE_PYR: elements[7][entities[i]->tag()].push_back(e2); break;
+        case TYPE_POLYG: elements[8][entities[i]->tag()].push_back(e2); break;
+        case TYPE_POLYH: elements[9][entities[i]->tag()].push_back(e2); break;
+        }
       }
     }
   }
@@ -1068,7 +1075,7 @@ int GModel::removeDuplicateMeshVertices(double tolerance)
 
   MVertexLessThanLexicographic::tolerance = old_tol;
 
-  Msg::Info("Removed %d duplicate mesh vertices", diff);
+  Msg::Info("Removed %d duplicate mesh %s", diff, diff > 1 ? "vertices" : "vertex");
 
   return diff;
 }
diff --git a/Mesh/meshGRegionExtruded.cpp b/Mesh/meshGRegionExtruded.cpp
index 83773a0c850ce052b3bf066f3f2167e5004dcbbe..365ca48b0a41c04733b5eeaeea530872f3ef5387 100644
--- a/Mesh/meshGRegionExtruded.cpp
+++ b/Mesh/meshGRegionExtruded.cpp
@@ -105,7 +105,7 @@ static int getExtrudedVertices(MElement *ele, ExtrudeParams *ep, int j, int k,
     }
     if(itp == pos.end())
       Msg::Error("Could not find extruded vertex (%.16g, %.16g, %.16g)",
-          tmp.x(), tmp.y(), tmp.z());
+                 tmp.x(), tmp.y(), tmp.z());
     else
       verts.push_back(*itp);
   }