diff --git a/Mesh/2D_Elliptic.cpp b/Mesh/2D_Elliptic.cpp
index f3225c0fa4f360f8b83a7e84ac57da159920d221..eb7d152cafb1a471894c5754ae61b7e0879b8998 100644
--- a/Mesh/2D_Elliptic.cpp
+++ b/Mesh/2D_Elliptic.cpp
@@ -1,4 +1,4 @@
-// $Id: 2D_Elliptic.cpp,v 1.20 2004-12-17 04:12:13 geuzaine Exp $
+// $Id: 2D_Elliptic.cpp,v 1.21 2004-12-17 05:11:59 geuzaine Exp $
 //
 // Copyright (C) 1997-2004 C. Geuzaine, J.-F. Remacle
 //
@@ -121,12 +121,17 @@ int MeshEllipticSurface(Surface * sur)
 			    (S[2]->lc * (1 - u) * (1. - v)) +
 			    (S[3]->lc * (1 + u) * (1. - v)));
         list[i + N1 * j] = Create_Vertex(++THEM->MaxPointNum, x, y, z, lc, 0.0);
-	Tree_Insert(sur->Vertices, &list[i + N1 * j]);
-        List_Add(sur->TrsfVertices, &list[i + N1 * j]);
       }
     }
   }
 
+  for(int i = 0; i < N1; i++){
+    for(int j = 0; j < N2; j++){
+      Tree_Insert(sur->Vertices, &list[i + N1 * j]);
+      List_Add(sur->TrsfVertices, &list[i + N1 * j]);
+    }
+  }
+
   List_Delete(l1);
   List_Delete(l2);
   List_Delete(l3);
@@ -157,7 +162,7 @@ int MeshEllipticSurface(Surface * sur)
 				(v23->Pos.X - v21->Pos.X) +
 				(v32->Pos.Y - v12->Pos.Y) *
 				(v23->Pos.Y - v21->Pos.Y));
-
+	
         v22->Pos.X = 0.5 * (alpha * (v32->Pos.X + v12->Pos.X) +
                             gamma * (v23->Pos.X + v21->Pos.X) -
                             2. * beta * (v33->Pos.X - v13->Pos.X -
@@ -176,6 +181,7 @@ int MeshEllipticSurface(Surface * sur)
       }
     }
   }
+
   for(int i = 0; i < N1 - 1; i++) {
     for(int j = 0; j < N2 - 1; j++) {
       if(sur->Recombine) {
diff --git a/Parser/Gmsh.tab.cpp b/Parser/Gmsh.tab.cpp
index 9767974c21c29cc772a92f33a1d3e5d96e98a7df..133392e89a03e2f343f271e36e5602e94e34bcd6 100644
--- a/Parser/Gmsh.tab.cpp
+++ b/Parser/Gmsh.tab.cpp
@@ -194,7 +194,7 @@
 
 #line 1 "Gmsh.y"
 
-// $Id: Gmsh.tab.cpp,v 1.213 2004-12-13 15:57:29 geuzaine Exp $
+// $Id: Gmsh.tab.cpp,v 1.214 2004-12-17 05:11:59 geuzaine Exp $
 //
 // Copyright (C) 1997-2004 C. Geuzaine, J.-F. Remacle
 //
@@ -7963,7 +7963,7 @@ case 343:
 	int k = List_Nbr(yyvsp[-1].l);
 	if(k != 3 && k != 4){
 	  yymsg(GERROR, "Wrong definition of Transfinite Surface %d: "
-		"%d points instead of 3 or 4" , yyvsp[-4].d, k);
+		"%d points instead of 3 or 4" , (int)yyvsp[-4].d, k);
 	}
 	else{
 	  for(int i = 0; i < k; i++){
@@ -7992,7 +7992,7 @@ case 344:
         int k = List_Nbr(yyvsp[-1].l);
         if(k != 4)
 	  yymsg(GERROR, "Wrong definition of Elliptic Surface %d: "
-		"%d points instead of 4" , yyvsp[-4].d, k);
+		"%d points instead of 4" , (int)yyvsp[-4].d, k);
         else{
 	  for(int i = 0; i < k; i++){
 	    double d;
@@ -8020,7 +8020,7 @@ case 345:
 	int k = List_Nbr(yyvsp[-1].l);
 	if(k != 6 && k != 8)
 	  yymsg(GERROR, "Wrong definition of Transfinite Volume %d: "
-		"%d points instead of 6 or 8" , yyvsp[-4].d, k);
+		"%d points instead of 6 or 8" , (int)yyvsp[-4].d, k);
 	else{
 	  for(int i = 0; i < k; i++){
 	    double d;
diff --git a/Parser/Gmsh.y b/Parser/Gmsh.y
index b7ef066626b2580b48a4f72b542a821e1427f094..d9767e6c91d24f5904f37bfb47f0b3c662055211 100644
--- a/Parser/Gmsh.y
+++ b/Parser/Gmsh.y
@@ -1,5 +1,5 @@
 %{
-// $Id: Gmsh.y,v 1.186 2004-12-13 15:57:35 geuzaine Exp $
+// $Id: Gmsh.y,v 1.187 2004-12-17 05:12:01 geuzaine Exp $
 //
 // Copyright (C) 1997-2004 C. Geuzaine, J.-F. Remacle
 //
@@ -3244,7 +3244,7 @@ Transfinite :
 	int k = List_Nbr($7);
 	if(k != 3 && k != 4){
 	  yymsg(GERROR, "Wrong definition of Transfinite Surface %d: "
-		"%d points instead of 3 or 4" , $4, k);
+		"%d points instead of 3 or 4" , (int)$4, k);
 	}
 	else{
 	  for(int i = 0; i < k; i++){
@@ -3271,7 +3271,7 @@ Transfinite :
         int k = List_Nbr($7);
         if(k != 4)
 	  yymsg(GERROR, "Wrong definition of Elliptic Surface %d: "
-		"%d points instead of 4" , $4, k);
+		"%d points instead of 4" , (int)$4, k);
         else{
 	  for(int i = 0; i < k; i++){
 	    double d;
@@ -3297,7 +3297,7 @@ Transfinite :
 	int k = List_Nbr($7);
 	if(k != 6 && k != 8)
 	  yymsg(GERROR, "Wrong definition of Transfinite Volume %d: "
-		"%d points instead of 6 or 8" , $4, k);
+		"%d points instead of 6 or 8" , (int)$4, k);
 	else{
 	  for(int i = 0; i < k; i++){
 	    double d;
diff --git a/Parser/Gmsh.yy.cpp b/Parser/Gmsh.yy.cpp
index 015147dd597ed1ac079976f788d839eb14618c7a..4e60fc46e0b3d34900ac557c1ad9dd4eef2e88f5 100644
--- a/Parser/Gmsh.yy.cpp
+++ b/Parser/Gmsh.yy.cpp
@@ -2,7 +2,7 @@
 /* A lexical scanner generated by flex */
 
 /* Scanner skeleton version:
- * $Header: /cvsroot/gmsh/Parser/Gmsh.yy.cpp,v 1.212 2004-12-13 15:57:35 geuzaine Exp $
+ * $Header: /cvsroot/gmsh/Parser/Gmsh.yy.cpp,v 1.213 2004-12-17 05:12:01 geuzaine Exp $
  */
 
 #define FLEX_SCANNER
@@ -1029,7 +1029,7 @@ char *yytext;
 #line 1 "Gmsh.l"
 #define INITIAL 0
 #line 2 "Gmsh.l"
-// $Id: Gmsh.yy.cpp,v 1.212 2004-12-13 15:57:35 geuzaine Exp $
+// $Id: Gmsh.yy.cpp,v 1.213 2004-12-17 05:12:01 geuzaine Exp $
 //
 // Copyright (C) 1997-2004 C. Geuzaine, J.-F. Remacle
 //