diff --git a/Geo/Geo.cpp b/Geo/Geo.cpp
index fcc3f4432725f10c063f1247446df1c3dee3bc3a..64e00c93d5592b60f6e98673f826c411c8578e6f 100644
--- a/Geo/Geo.cpp
+++ b/Geo/Geo.cpp
@@ -1,4 +1,4 @@
-// $Id: Geo.cpp,v 1.98 2007-09-26 20:51:58 geuzaine Exp $
+// $Id: Geo.cpp,v 1.99 2008-01-16 21:51:47 geuzaine Exp $
 //
 // Copyright (C) 1997-2007 C. Geuzaine, J.-F. Remacle
 //
@@ -504,10 +504,9 @@ Curve *Create_Curve(int Num, int Typ, int Order, List_T *Liste,
   pC->Circle.n[1] = 0.0;
   pC->Circle.n[2] = 1.0;
   pC->geometry = 0;
-  for(int i = 0; i < 4; i++) {
-    pC->ipar[i] = 0;
-    pC->dpar[i] = 0.0;
-  }
+  pC->nbPointsTransfinite = 0;
+  pC->typeTransfinite = 0;
+  pC->coeffTransfinite = 0.;
 
   if(Typ == MSH_SEGM_SPLN) {
     for(int i = 0; i < 4; i++)
@@ -614,8 +613,6 @@ Surface *Create_Surface(int Num, int Typ)
     IMAX(GModel::current()->getGEOInternals()->MaxSurfaceNum, Num);
   pS->Typ = Typ;
   pS->Method = LIBRE;
-  for(int i = 0; i < 5; i++)
-    pS->ipar[i] = 0;
   pS->Recombine = 0;
   pS->Recombine_Dir = -1;
   pS->RecombineAngle = 75;
@@ -653,8 +650,6 @@ Volume *Create_Volume(int Num, int Typ)
     IMAX(GModel::current()->getGEOInternals()->MaxVolumeNum, Num);
   pV->Typ = Typ;
   pV->Method = LIBRE;
-  for(int i = 0; i < 8; i++)
-    pV->ipar[i] = 0;
   pV->TrsfPoints = List_Create(6, 6, sizeof(Vertex *));
   pV->Surfaces = List_Create(1, 2, sizeof(Surface *));
   pV->SurfacesOrientations = List_Create(1, 2, sizeof(int));
@@ -885,10 +880,9 @@ void CopyCurve(Curve *c, Curve *cc)
   // copied, the meshing algorithm will take care of it
   // (e.g. ExtrudeMesh()).
   //cc->Method = c->Method; 
-  for(i = 0; i < 4; i++)
-    cc->ipar[i] = c->ipar[i];
-  for(i = 0; i < 4; i++)
-    cc->dpar[i] = c->dpar[i];
+  cc->nbPointsTransfinite = c->nbPointsTransfinite;
+  cc->typeTransfinite = c->typeTransfinite;
+  cc->coeffTransfinite = c->coeffTransfinite;
   cc->l = c->l;
   for(i = 0; i < 4; i++)
     for(j = 0; j < 4; j++)
@@ -937,8 +931,6 @@ void CopySurface(Surface *s, Surface *ss)
   //ss->Method = s->Method;
   //ss->Recombine = s->Recombine;
   //ss->RecombineAngle = s->RecombineAngle;
-  for(i = 0; i < 4; i++)
-    ss->ipar[i] = s->ipar[i];
   ss->a = s->a;
   ss->b = s->b;
   ss->c = s->c;
diff --git a/Geo/Geo.h b/Geo/Geo.h
index 4a4cae8570b2ada36fd1fbd1bc17b7ee6df915ce..dc9e0422d64d832cfe013448d49d16a3064041ef 100644
--- a/Geo/Geo.h
+++ b/Geo/Geo.h
@@ -125,8 +125,9 @@ typedef struct{
   int Typ;
   char Visible;
   int Method;
-  int ipar[4];
-  double dpar[4];
+  int nbPointsTransfinite;
+  int typeTransfinite;
+  double coeffTransfinite;
   double l;
   double mat[4][4];
   Vertex *beg, *end;
@@ -154,7 +155,6 @@ typedef struct{
   int Recombine;
   int Recombine_Dir; // -1 is left, +1 is right, 0 is alternated
   double RecombineAngle;
-  int ipar[5];
   List_T *Generatrices;
   List_T *EmbeddedCurves;
   List_T *EmbeddedPoints;
@@ -182,7 +182,6 @@ typedef struct {
   int Typ;
   char Visible;
   int Method;
-  int ipar[8];
   ExtrudeParams *Extrude;
   List_T *TrsfPoints;
   List_T *Surfaces;
diff --git a/Geo/gmshEdge.cpp b/Geo/gmshEdge.cpp
index 630467e2207847f6fc6c6ff598cdb3945c6f8314..5d415869ad705030d651ff90275976e915239782 100644
--- a/Geo/gmshEdge.cpp
+++ b/Geo/gmshEdge.cpp
@@ -1,4 +1,4 @@
-// $Id: gmshEdge.cpp,v 1.40 2007-10-14 09:51:17 geuzaine Exp $
+// $Id: gmshEdge.cpp,v 1.41 2008-01-16 21:51:47 geuzaine Exp $
 //
 // Copyright (C) 1997-2007 C. Geuzaine, J.-F. Remacle
 //
@@ -46,9 +46,9 @@ gmshEdge::gmshEdge(GModel *m, int num)
 void gmshEdge::resetMeshAttributes()
 {
   meshAttributes.Method = c->Method;
-  meshAttributes.nbPointsTransfinite = c->ipar[0];
-  meshAttributes.coeffTransfinite = c->dpar[0];
-  meshAttributes.typeTransfinite = c->ipar[1];
+  meshAttributes.nbPointsTransfinite = c->nbPointsTransfinite;
+  meshAttributes.typeTransfinite = c->typeTransfinite;
+  meshAttributes.coeffTransfinite = c->coeffTransfinite;
   meshAttributes.extrude = c->Extrude;
 }
 
diff --git a/Mesh/meshGRegionDelaunayInsertion.cpp b/Mesh/meshGRegionDelaunayInsertion.cpp
index f73352931215afc60bce440764febb55f6ce8295..8daab584c43702412ef65960643c9c67690405ea 100644
--- a/Mesh/meshGRegionDelaunayInsertion.cpp
+++ b/Mesh/meshGRegionDelaunayInsertion.cpp
@@ -1,4 +1,4 @@
-// $Id: meshGRegionDelaunayInsertion.cpp,v 1.27 2008-01-15 19:50:58 remacle Exp $
+// $Id: meshGRegionDelaunayInsertion.cpp,v 1.28 2008-01-16 21:51:49 geuzaine Exp $
 //
 // Copyright (C) 1997-2007 C. Geuzaine, J.-F. Remacle
 //
@@ -857,11 +857,12 @@ void insertVerticesInRegion (GRegion *gr)
 		  myFactory.changeTetRadius(allTets.begin(),0.0);
 		  delete v;
 		}
-	      else 
+	      else
 		v->onWhat()->mesh_vertices.push_back(v);
 	    }
-	  else
+	  else{
 	    myFactory.changeTetRadius(allTets.begin(),0.0);
+	  }
 	}
       // Normally, a tet mesh contains about 6 times more tets than
       // vertices
diff --git a/Parser/Gmsh.tab.cpp b/Parser/Gmsh.tab.cpp
index 74dd624e3747d8096a39f66549fa4e6705067167..989bedd965d59a34dc2f8da09ad4b8338e07bd39 100644
--- a/Parser/Gmsh.tab.cpp
+++ b/Parser/Gmsh.tab.cpp
@@ -326,7 +326,7 @@
 /* Copy the first part of user declarations.  */
 #line 1 "Gmsh.y"
 
-// $Id: Gmsh.tab.cpp,v 1.337 2008-01-09 08:17:12 geuzaine Exp $
+// $Id: Gmsh.tab.cpp,v 1.338 2008-01-16 21:51:47 geuzaine Exp $
 //
 // Copyright (C) 1997-2007 C. Geuzaine, J.-F. Remacle
 //
@@ -6629,9 +6629,9 @@ yyreduce:
 	  yymsg(WARNING, "Unknown curve %d", j);
 	else{
 	  c->Method = TRANSFINI;
-	  c->ipar[0] = ((yyvsp[(5) - (6)].d)>2)?(int)(yyvsp[(5) - (6)].d):2;
-	  c->ipar[1] = sign(d);
-	  c->dpar[0] = 1.0;
+	  c->nbPointsTransfinite = ((yyvsp[(5) - (6)].d) > 2) ? (int)(yyvsp[(5) - (6)].d) : 2;
+	  c->typeTransfinite = sign(d);
+	  c->coeffTransfinite = 1.0;
 	}
       }
       List_Delete((yyvsp[(3) - (6)].l));
@@ -6650,9 +6650,9 @@ yyreduce:
 	  yymsg(WARNING, "Unknown curve %d", j);
 	else{
 	  c->Method = TRANSFINI;
-	  c->ipar[0] = ((yyvsp[(5) - (9)].d)>2)?(int)(yyvsp[(5) - (9)].d):2;
-	  c->ipar[1] = sign(d); /* Progresion : code 1 ou -1 */
-	  c->dpar[0] = fabs((yyvsp[(8) - (9)].d));
+	  c->nbPointsTransfinite = ((yyvsp[(5) - (9)].d) > 2) ? (int)(yyvsp[(5) - (9)].d) : 2;
+	  c->typeTransfinite = sign(d); // Progresion : code 1 ou -1
+	  c->coeffTransfinite = fabs((yyvsp[(8) - (9)].d));
 	}
       }
       List_Delete((yyvsp[(3) - (9)].l));
@@ -6671,9 +6671,9 @@ yyreduce:
 	  yymsg(WARNING, "Unknown curve %d", j);
 	else{
 	  c->Method = TRANSFINI;
-	  c->ipar[0] = ((yyvsp[(5) - (9)].d)>2)?(int)(yyvsp[(5) - (9)].d):2;
-	  c->ipar[1] = 2*sign(d); /* Bump : code 2 ou -2 */
-	  c->dpar[0] = fabs((yyvsp[(8) - (9)].d));
+	  c->nbPointsTransfinite = ((yyvsp[(5) - (9)].d) > 2) ? (int)(yyvsp[(5) - (9)].d) : 2;
+	  c->typeTransfinite = 2 * sign(d); // Bump : code 2 ou -2
+	  c->coeffTransfinite = fabs((yyvsp[(8) - (9)].d));
 	}
       }
       List_Delete((yyvsp[(3) - (9)].l));
diff --git a/Parser/Gmsh.y b/Parser/Gmsh.y
index 8d623504c09106532835e9dc011ce243b4eb548f..bfb600a18ad9cfe20cfed8a9e20f7fb5082a4388 100644
--- a/Parser/Gmsh.y
+++ b/Parser/Gmsh.y
@@ -1,5 +1,5 @@
 %{
-// $Id: Gmsh.y,v 1.290 2007-11-08 19:30:32 geuzaine Exp $
+// $Id: Gmsh.y,v 1.291 2008-01-16 21:51:49 geuzaine Exp $
 //
 // Copyright (C) 1997-2007 C. Geuzaine, J.-F. Remacle
 //
@@ -2572,9 +2572,9 @@ Transfinite :
 	  yymsg(WARNING, "Unknown curve %d", j);
 	else{
 	  c->Method = TRANSFINI;
-	  c->ipar[0] = ($5>2)?(int)$5:2;
-	  c->ipar[1] = sign(d);
-	  c->dpar[0] = 1.0;
+	  c->nbPointsTransfinite = ($5 > 2) ? (int)$5 : 2;
+	  c->typeTransfinite = sign(d);
+	  c->coeffTransfinite = 1.0;
 	}
       }
       List_Delete($3);
@@ -2590,9 +2590,9 @@ Transfinite :
 	  yymsg(WARNING, "Unknown curve %d", j);
 	else{
 	  c->Method = TRANSFINI;
-	  c->ipar[0] = ($5>2)?(int)$5:2;
-	  c->ipar[1] = sign(d); /* Progresion : code 1 ou -1 */
-	  c->dpar[0] = fabs($8);
+	  c->nbPointsTransfinite = ($5 > 2) ? (int)$5 : 2;
+	  c->typeTransfinite = sign(d); // Progresion : code 1 ou -1
+	  c->coeffTransfinite = fabs($8);
 	}
       }
       List_Delete($3);
@@ -2608,9 +2608,9 @@ Transfinite :
 	  yymsg(WARNING, "Unknown curve %d", j);
 	else{
 	  c->Method = TRANSFINI;
-	  c->ipar[0] = ($5>2)?(int)$5:2;
-	  c->ipar[1] = 2*sign(d); /* Bump : code 2 ou -2 */
-	  c->dpar[0] = fabs($8);
+	  c->nbPointsTransfinite = ($5 > 2) ? (int)$5 : 2;
+	  c->typeTransfinite = 2 * sign(d); // Bump : code 2 ou -2
+	  c->coeffTransfinite = fabs($8);
 	}
       }
       List_Delete($3);
diff --git a/Parser/Gmsh.yy.cpp b/Parser/Gmsh.yy.cpp
index 0a93dabea0b54632abf46a91ff1e00f80b416b7b..f51a4b94b60d9349060d1fbe6f145f4ccb162246 100644
--- a/Parser/Gmsh.yy.cpp
+++ b/Parser/Gmsh.yy.cpp
@@ -847,7 +847,7 @@ int yy_flex_debug = 0;
 char *yytext;
 #line 1 "Gmsh.l"
 #line 2 "Gmsh.l"
-// $Id: Gmsh.yy.cpp,v 1.336 2008-01-09 08:17:13 geuzaine Exp $
+// $Id: Gmsh.yy.cpp,v 1.337 2008-01-16 21:51:49 geuzaine Exp $
 //
 // Copyright (C) 1997-2007 C. Geuzaine, J.-F. Remacle
 //