diff --git a/Mesh/Print_Mesh.cpp b/Mesh/Print_Mesh.cpp
index e07acd147ded5839ff69655448c30c0d6c568a22..c8ba5eef9101bef2c007e1c4d5dd79893f60c684 100644
--- a/Mesh/Print_Mesh.cpp
+++ b/Mesh/Print_Mesh.cpp
@@ -1,4 +1,4 @@
-/* $Id: Print_Mesh.cpp,v 1.8 2000-11-26 15:43:47 geuzaine Exp $ */
+/* $Id: Print_Mesh.cpp,v 1.9 2000-11-30 10:14:09 geuzaine Exp $ */
 
 #include "Gmsh.h"
 #include "Const.h"
@@ -218,34 +218,21 @@ void add_msh_elements (Mesh * M){
   for (i = 0; i < List_Nbr (M->PhysicalGroups); i++){
     List_Read (M->PhysicalGroups, i, &p);
     MSH_PHYSICAL_NUM = p->Num;
+    MSH_VOL_NUM = 0;
 
     switch (p->Typ){
 
-    case MSH_PHYSICAL_VOLUME:
-      for (k = 0; k < List_Nbr (ListVolumes); k++){
-        List_Read (ListVolumes, k, &pV);
-        for (j = 0; j < List_Nbr (p->Entities); j++){
-          List_Read (p->Entities, j, &Num);
-          MSH_VOL_NUM = abs (Num);
-          MSH_PHYSICAL_ORI = sign (Num);
-          Tree_Action (pV->Simplexes, add_msh_simplex);
-          Tree_Action (pV->Hexahedra, add_msh_hexahedron);
-          Tree_Action (pV->Prisms, add_msh_prism);
-        }
-      }
-      break;
-
-    case MSH_PHYSICAL_SURFACE:
+    case MSH_PHYSICAL_POINT:
       for (j = 0; j < List_Nbr (p->Entities); j++){
-        ps = &s;
+        pv = &v;
         List_Read (p->Entities, j, &Num);
-        ps->Num = abs (Num);
+        pv->Num = abs (Num);
         MSH_PHYSICAL_ORI = sign (Num);
-        if (Tree_Query (M->Surfaces, &ps))
-          Tree_Action (ps->Simplexes, add_msh_simplex);
+        if (Tree_Query (M->Vertices, &pv))
+          add_msh_point (pv);
       }
       break;
-      
+
     case MSH_PHYSICAL_LINE:
       for (j = 0; j < List_Nbr (p->Entities); j++){
         pc = &c;
@@ -256,20 +243,40 @@ void add_msh_elements (Mesh * M){
           Tree_Action (pc->Simplexes, add_msh_simplex);
       }
       break;
-      
-    case MSH_PHYSICAL_POINT:
+
+    case MSH_PHYSICAL_SURFACE:
       for (j = 0; j < List_Nbr (p->Entities); j++){
-        pv = &v;
+        ps = &s;
         List_Read (p->Entities, j, &Num);
-        pv->Num = abs (Num);
+        ps->Num = abs (Num);
         MSH_PHYSICAL_ORI = sign (Num);
-        if (Tree_Query (M->Vertices, &pv))
-          add_msh_point (pv);
+        if (Tree_Query (M->Surfaces, &ps)){
+          Tree_Action (ps->Simplexes, add_msh_simplex);
+	}
+      }
+      break;
+
+    case MSH_PHYSICAL_VOLUME:
+      for (k = 0; k < List_Nbr (ListVolumes); k++){
+        List_Read (ListVolumes, k, &pV);
+        for (j = 0; j < List_Nbr (p->Entities); j++){
+          List_Read (p->Entities, j, &Num);
+          MSH_VOL_NUM = abs (Num);
+          MSH_PHYSICAL_ORI = sign (Num);
+          Tree_Action (pV->Simplexes, add_msh_simplex);
+          Tree_Action (pV->Hexahedra, add_msh_hexahedron);
+          Tree_Action (pV->Prisms, add_msh_prism);
+        }
       }
       break;
       
+    default :
+      Msg(ERROR, "Unknown Type of Physical Group");
+      break;
     }
+
   }
+
 }
 
 void process_msh_elements (Mesh * M){