diff --git a/Graphics/Mesh.cpp b/Graphics/Mesh.cpp
index ad831f408ae013dad8c920d90d6b80d4b4ad514f..1ed4c85b6af735cbb7aa93f87403fb053cbafbed 100644
--- a/Graphics/Mesh.cpp
+++ b/Graphics/Mesh.cpp
@@ -1,4 +1,4 @@
-// $Id: Mesh.cpp,v 1.133 2005-06-11 17:02:34 geuzaine Exp $
+// $Id: Mesh.cpp,v 1.134 2005-06-25 04:05:39 geuzaine Exp $
 //
 // Copyright (C) 1997-2005 C. Geuzaine, J.-F. Remacle
 //
@@ -454,6 +454,7 @@ void Draw_Mesh_Extruded_Surfaces(void *a, void *b)
   Volume *v = *(Volume **) a;
   if(!(v->Visible & VIS_MESH))
     return;
+  Tree_Action(v->Lin_Surf, Draw_Mesh_Line);
   Tree_Action(v->Simp_Surf, Draw_Mesh_Triangle);
   Tree_Action(v->Quad_Surf, Draw_Mesh_Quadrangle);
 }
@@ -836,9 +837,6 @@ void Draw_Mesh_Triangle(void *a, void *b)
 
   SimplexBase *s = *(SimplexBase **) a;
 
-  if(!s->V[2]) // the old extrusion algo puts lines in the simp_surf tree...
-    return;
-
   if(!(s->Visible & VIS_MESH))
     return;
 
diff --git a/Mesh/3D_Extrude_Old.cpp b/Mesh/3D_Extrude_Old.cpp
index dcba7a8893537d210d147f34b153096dd6a919de..40f92d315df445b957a1bd5ba3474f9f6f0867ea 100644
--- a/Mesh/3D_Extrude_Old.cpp
+++ b/Mesh/3D_Extrude_Old.cpp
@@ -1,4 +1,4 @@
-// $Id: 3D_Extrude_Old.cpp,v 1.36 2005-06-20 17:02:45 geuzaine Exp $
+// $Id: 3D_Extrude_Old.cpp,v 1.37 2005-06-25 04:05:40 geuzaine Exp $
 //
 // Copyright (C) 1997-2005 C. Geuzaine, J.-F. Remacle
 //
@@ -525,7 +525,7 @@ static void Extrude_Seg(void *data, void *dum)
       List_Read(V2->Extruded_Points, k, &v2);
       Simplex *s = Create_Simplex(v1, v2, NULL, NULL);
       s->iEnt = LineLayer[i];
-      Tree_Add(THEV->Simp_Surf, &s);
+      Tree_Add(THEV->Lin_Surf, &s);
     }
     for(int j = 0; j < NbElmLayer[i]; j++) {
       k++;
@@ -603,7 +603,7 @@ static void Extrude_Pnt(Vertex * V1)
       if(LineLayer[i]) {
         Simplex *s = Create_Simplex(v1, v2, NULL, NULL);
         s->iEnt = LineLayer[i];
-        Tree_Add(THEV->Simp_Surf, &s);
+        Tree_Add(THEV->Lin_Surf, &s);
       }
       k++;
     }
diff --git a/Mesh/Create.cpp b/Mesh/Create.cpp
index 9d4192c59d193ba144475414d120c07e184e9e72..6c9f80b1bbd9b04a9c2f5388d62c63bf367cbd52 100644
--- a/Mesh/Create.cpp
+++ b/Mesh/Create.cpp
@@ -1,4 +1,4 @@
-// $Id: Create.cpp,v 1.75 2005-06-10 22:50:49 geuzaine Exp $
+// $Id: Create.cpp,v 1.76 2005-06-25 04:05:40 geuzaine Exp $
 //
 // Copyright (C) 1997-2005 C. Geuzaine, J.-F. Remacle
 //
@@ -736,6 +736,7 @@ Volume *Create_Volume(int Num, int Typ)
   pV->Edges = NULL;
   pV->Faces = NULL;
   // for old extrusion mesh generator
+  pV->Lin_Surf = Tree_Create(sizeof(Simplex *), compareSimplex);
   pV->Simp_Surf = Tree_Create(sizeof(Simplex *), compareSimplex);
   pV->Quad_Surf = Tree_Create(sizeof(Simplex *), compareQuadrangle);
   pV->TriVertexArray = NULL;
@@ -766,6 +767,7 @@ void Free_Volume_But_Not_Elements(void *a, void *b)
     List_Delete(pV->SurfacesOrientations);
     Tree_Delete(pV->Simplexes);
     Tree_Delete(pV->SimplexesBase);
+    Tree_Delete(pV->Lin_Surf); // for old extrusion mesh generator
     Tree_Delete(pV->Simp_Surf); // for old extrusion mesh generator
     Tree_Delete(pV->Quad_Surf); // for old extrusion mesh generator
     Tree_Delete(pV->Vertices);  // vertices freed elsewhere
diff --git a/Mesh/Mesh.h b/Mesh/Mesh.h
index 84564bc8e85ca87c48ba68b864b281ffbd8d23d2..fbd9d07638562b751c03329c277bcb5f06215f99 100644
--- a/Mesh/Mesh.h
+++ b/Mesh/Mesh.h
@@ -303,6 +303,7 @@ typedef struct {
   Tree_T *Edges;
   Tree_T *Faces;
   Tree_T *Simplexes, *SimplexesBase;
+  Tree_T *Lin_Surf; // for old extrusion mesh generator
   Tree_T *Simp_Surf; // for old extrusion mesh generator
   Tree_T *Quad_Surf; // for old extrusion mesh generator
   Tree_T *Hexahedra;
diff --git a/Mesh/Print_Mesh.cpp b/Mesh/Print_Mesh.cpp
index cc0e7ee4a3161578522ae26101f777d665d1af40..40a096897eb28ee33d968c0e360fd4c99b2fd9c2 100644
--- a/Mesh/Print_Mesh.cpp
+++ b/Mesh/Print_Mesh.cpp
@@ -1,4 +1,4 @@
-// $Id: Print_Mesh.cpp,v 1.61 2005-05-16 00:50:10 geuzaine Exp $
+// $Id: Print_Mesh.cpp,v 1.62 2005-06-25 04:05:40 geuzaine Exp $
 //
 // Copyright (C) 1997-2005 C. Geuzaine, J.-F. Remacle
 //
@@ -415,8 +415,7 @@ static void _msh_print_elements(Mesh *M)
             List_Read(p->Entities, j, &Num);
             MSH_LIN_NUM = abs(Num);
             MSH_PHYSICAL_ORI = sign(Num);
-            Tree_Action(pV->Simp_Surf, _msh_print_simplex);
-            Tree_Action(pV->Quad_Surf, _msh_print_quadrangle);
+            Tree_Action(pV->Lin_Surf, _msh_print_simplex);
           }
         }
       }
@@ -512,6 +511,12 @@ static void _msh_print_all_simpsurf(void *a, void *b)
   Tree_Action(v->Quad_Surf, _msh_print_quadrangle);
 }
 
+static void _msh_print_all_linsurf(void *a, void *b)
+{
+  Volume *v = *(Volume **) a;
+  Tree_Action(v->Lin_Surf, _msh_print_simplex);
+}
+
 static void _msh_print_all_volumes(void *a, void *b)
 {
   Volume *v = *(Volume **) a;
@@ -530,6 +535,7 @@ static void _msh_print_all_elements(Mesh *M)
 
   if(CTX.mesh.oldxtrude) {
     Tree_Action(M->Volumes, _msh_print_all_simpsurf);
+    Tree_Action(M->Volumes, _msh_print_all_linsurf);
   }
   else {
     Tree_Action(M->Curves, _msh_print_all_curves);