diff --git a/Geo/GModelIO_Mesh.cpp b/Geo/GModelIO_Mesh.cpp
index dbbd9e0c039c623164ed427d4c1abf5a7e697c54..65ebd9d8e956eec243e15428f29c6d0aacbed387 100644
--- a/Geo/GModelIO_Mesh.cpp
+++ b/Geo/GModelIO_Mesh.cpp
@@ -117,6 +117,12 @@ static MElement *createElementMSH(GModel *m, int num, int typeMSH, int physical,
                                   bool owner=false, MElement *parent=0,
                                   MElement *d1=0, MElement *d2=0)
 {
+  if(CTX::instance()->mesh.switchElementTags) {
+    int tmp = reg;
+    reg = physical;
+    physical = reg;
+  }
+
   MElementFactory factory;
   MElement *e = factory.create(typeMSH, v, num, part, owner, parent, d1, d2);
 
@@ -395,15 +401,9 @@ int GModel::readMSH(const std::string &name)
           int dom1 = 0, dom2 = 0, numVertices;
           std::vector<short> ghosts;
           if(version <= 1.0){
-	    if(CTX::instance()->mesh.switchElementTags) {
-	      if(fscanf(fp, "%d %d %d %d %d", &num, &type, &elementary, &physical, 
-			&numVertices) != 5)
-		return 0;
-	    } else {
-	      if(fscanf(fp, "%d %d %d %d %d", &num, &type, &physical, &elementary, 
-			&numVertices) != 5)
-		return 0;
-	    }
+            if(fscanf(fp, "%d %d %d %d %d", &num, &type, &physical, &elementary, 
+                      &numVertices) != 5)
+              return 0;
             if(numVertices != MElement::getInfoMSH(type)) return 0;
           }
           else{
@@ -3479,7 +3479,7 @@ GModel *GModel::createGModel(std::map<int, MVertex*> &vertexMap,
   int *indices;
   int nbVertices;
   for(int i = 0; i < numElement; ++i){
-    num=elementNum[i];
+    num = elementNum[i];
     std::vector<MVertex*> vertices;
     nbVertices = (int)vertexIndices[i].size();
     indices = &vertexIndices[i][0];