diff --git a/Geo/GModelIO_Mesh.cpp b/Geo/GModelIO_Mesh.cpp
index 65ebd9d8e956eec243e15428f29c6d0aacbed387..719319e92b89e248066cd0b3c9da500d022fb195 100644
--- a/Geo/GModelIO_Mesh.cpp
+++ b/Geo/GModelIO_Mesh.cpp
@@ -1659,8 +1659,13 @@ int GModel::readUNV(const std::string &name)
           if(strlen(buffer) < 3) continue; // possible line ending after last fscanf
           if(!strncmp(buffer, "    -1", 6)) break;
           int num, type, elementary, physical, color, numNodes;
-          if(sscanf(buffer, "%d %d %d %d %d %d", &num, &type, &elementary, &physical,
-                    &color, &numNodes) != 6) break;
+	  if(!CTX::instance()->mesh.switchElementTags) {
+            if(sscanf(buffer, "%d %d %d %d %d %d", &num, &type, &elementary, &physical,
+                      &color, &numNodes) != 6) break;
+	  } else {
+            if(sscanf(buffer, "%d %d %d %d %d %d", &num, &type, &physical, &elementary,
+                      &color, &numNodes) != 6) break;
+	  }
           if(elementary < 0) elementary = getMaxElementaryNumber(-1) + 1;
           if(physical < 0) physical = 0;
           switch(type){