diff --git a/Common/CommandLine.cpp b/Common/CommandLine.cpp
index 49a9f901fb96301b6aa38ba16247f32f09f405be..f8074001527c72414f53e1ef83fa35575191bc9b 100644
--- a/Common/CommandLine.cpp
+++ b/Common/CommandLine.cpp
@@ -1,4 +1,4 @@
-// $Id: CommandLine.cpp,v 1.25 2004-01-25 09:32:30 geuzaine Exp $
+// $Id: CommandLine.cpp,v 1.26 2004-02-05 16:53:58 geuzaine Exp $
 //
 // Copyright (C) 1997-2004 C. Geuzaine, J.-F. Remacle
 //
@@ -264,15 +264,13 @@ void Get_Options(int argc, char *argv[], int *nbfiles)
         i++;
         CTX.terminal = 1;
         if(argv[i] && argv[i + 1]) {
-          ParseFile(argv[i], 0, 1);
-          if(List_Nbr(CTX.post.list))
-            WriteView(1, (Post_View *) List_Pointer(CTX.post.list, 0),
-                      argv[i + 1]);
-          else
-            fprintf(stderr, ERROR_STR "No view to convert\n");
+          MergeProblem(argv[i]);
+          for(int j = 0; j < List_Nbr(CTX.post.list); j++)
+            WriteView((Post_View *) List_Pointer(CTX.post.list, j),
+                      argv[i + 1], 1, j ? 1 : 0);
         }
         else
-          fprintf(stderr, "Usage: %s -convert view.ascii view.binary\n",
+          fprintf(stderr, "Usage: %s -convert ViewFile BinaryViewFile\n",
                   argv[0]);
         exit(1);
       }
diff --git a/Common/Views.cpp b/Common/Views.cpp
index 5e8f3fcd976254baed7645efac522b8e6313a2af..8f62911e90999715a6cdd1c1100be793a200b153 100644
--- a/Common/Views.cpp
+++ b/Common/Views.cpp
@@ -1,4 +1,4 @@
-// $Id: Views.cpp,v 1.111 2004-02-05 02:10:42 geuzaine Exp $
+// $Id: Views.cpp,v 1.112 2004-02-05 16:53:58 geuzaine Exp $
 //
 // Copyright (C) 1997-2004 C. Geuzaine, J.-F. Remacle
 //
@@ -787,7 +787,7 @@ void ReadView(FILE *file, char *filename)
                &v->NbSL, &v->NbVL, &v->NbTL,
                &v->NbST, &v->NbVT, &v->NbTT, &v->NbSS, &v->NbVS, &v->NbTS);
         v->NbT2 = t2l = v->NbT3 = t3l = 0;
-        Msg(INFO, "Detected post-processing view format <= 1.0");
+        Msg(DEBUG, "Detected post-processing view format <= 1.0");
       }
       else if(version == 1.1) {
         fscanf(file,
@@ -795,7 +795,7 @@ void ReadView(FILE *file, char *filename)
                name, &v->NbTimeStep, &v->NbSP, &v->NbVP, &v->NbTP, &v->NbSL,
                &v->NbVL, &v->NbTL, &v->NbST, &v->NbVT, &v->NbTT, &v->NbSS,
                &v->NbVS, &v->NbTS, &v->NbT2, &t2l, &v->NbT3, &t3l);
-        Msg(INFO, "Detected post-processing view format 1.1");
+        Msg(DEBUG, "Detected post-processing view format 1.1");
       }
       else if(version == 1.2) {
         fscanf(file, "%s %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d "
@@ -809,7 +809,7 @@ void ReadView(FILE *file, char *filename)
                &v->NbSH, &v->NbVH, &v->NbTH,
                &v->NbSI, &v->NbVI, &v->NbTI,
                &v->NbSY, &v->NbVY, &v->NbTY, &v->NbT2, &t2l, &v->NbT3, &t3l);
-        Msg(INFO, "Detected post-processing view format 1.2");
+        Msg(DEBUG, "Detected post-processing view format 1.2");
       }
       else {
         Msg(GERROR, "Unknown post-processing file format (version %g)",
@@ -952,27 +952,30 @@ void ReadView(FILE *file, char *filename)
 // FIXME: add a format similar to the msh format (node list + simplex list)
 // FIXME: add a structured format
 
-void WriteView(int Flag_BIN, Post_View * v, char *filename)
+void WriteView(Post_View *v, char *filename, int binary, int append)
 {
   FILE *file;
   char name[256];
   int i, f, One = 1;
 
   if(filename) {
-    file = fopen(filename, Flag_BIN ? "wb" : "w");
+    file = fopen(filename, append ? (binary ? "ab" : "a") : (binary ? "wb" : "w"));
     if(!file) {
       Msg(GERROR, "Unable to open file '%s'", filename);
       return;
     }
-    Msg(INFO, "Writing post-processing file '%s'", filename);
+    if(!append)
+      Msg(INFO, "Writing post-processing file '%s'", filename);
   }
   else
     file = stdout;
 
-  fprintf(file, "$PostFormat /* Gmsh 1.2, %s */\n",
-          Flag_BIN ? "binary" : "ascii");
-  fprintf(file, "1.2 %d %d\n", Flag_BIN, (int)sizeof(double));
-  fprintf(file, "$EndPostFormat\n");
+  if(!append){
+    fprintf(file, "$PostFormat /* Gmsh 1.2, %s */\n",
+	    binary ? "binary" : "ascii");
+    fprintf(file, "1.2 %d %d\n", binary, (int)sizeof(double));
+    fprintf(file, "$EndPostFormat\n");
+  }
 
   for(i = 0; i < (int)strlen(v->Name); i++) {
     if(v->Name[i] == ' ')
@@ -992,7 +995,7 @@ void WriteView(int Flag_BIN, Post_View * v, char *filename)
           v->NbSS, v->NbVS, v->NbTS, v->NbSH, v->NbVH, v->NbTH,
           v->NbSI, v->NbVI, v->NbTI, v->NbSY, v->NbVY, v->NbTY,
           v->NbT2, List_Nbr(v->T2C), v->NbT3, List_Nbr(v->T3C));
-  if(Flag_BIN) {
+  if(binary) {
     f = LIST_FORMAT_BINARY;
     fwrite(&One, sizeof(int), 1, file);
   }
@@ -1032,7 +1035,7 @@ void WriteView(int Flag_BIN, Post_View * v, char *filename)
 
   if(filename) {
     fclose(file);
-    Msg(INFO, "Wrote post-processing file '%s'", filename);
+    Msg(INFO, "Wrote view '%s' in post-processing file '%s'", v->Name, filename);
     Msg(STATUS2N, "Wrote '%s'", filename);
   }
 
diff --git a/Common/Views.h b/Common/Views.h
index ba1b2fcd0a17f47ed3df3223d4c7e5390b53efe3..4a2d7fdd970b46042ae6444d0201059e19596673 100644
--- a/Common/Views.h
+++ b/Common/Views.h
@@ -151,7 +151,7 @@ void FreeView(Post_View *v);
 bool RemoveViewByIndex(int index);
 bool RemoveViewByNumber(int num);
 void ReadView(FILE *file, char *filename);
-void WriteView(int Flag_BIN, Post_View *v, char *filename);
+void WriteView(Post_View *v, char *filename, int binary, int append);
 void CopyViewOptions(Post_View *src, Post_View *dest);
 void CombineViews(int all, int remove);
 void CombineViews_Time(int how, int remove);
diff --git a/Fltk/Callbacks.cpp b/Fltk/Callbacks.cpp
index 6edf933e4602551fde860651596ff383b53845b5..974d1d0453324b2db1252e11788dedcedcc8514f 100644
--- a/Fltk/Callbacks.cpp
+++ b/Fltk/Callbacks.cpp
@@ -1,4 +1,4 @@
-// $Id: Callbacks.cpp,v 1.201 2004-02-05 02:10:42 geuzaine Exp $
+// $Id: Callbacks.cpp,v 1.202 2004-02-05 16:53:58 geuzaine Exp $
 //
 // Copyright (C) 1997-2004 C. Geuzaine, J.-F. Remacle
 //
@@ -2890,8 +2890,8 @@ test:
           goto test;
     }
   save:
-    WriteView(0, (Post_View *) List_Pointer(CTX.post.list, (long int)data),
-              name);
+    WriteView((Post_View *) List_Pointer(CTX.post.list, (long int)data),
+              name, 0, 0);
   }
 }
 
@@ -2909,8 +2909,8 @@ test:
           goto test;
     }
   save:
-    WriteView(1, (Post_View *) List_Pointer(CTX.post.list, (long int)data),
-              name);
+    WriteView((Post_View *) List_Pointer(CTX.post.list, (long int)data),
+              name, 1, 0);
   }
 }
 
diff --git a/Parser/Gmsh.tab.cpp b/Parser/Gmsh.tab.cpp
index 47dabb40f3133a063c827fe62c65cb01d416908f..0a65e07c4dea5007456c1b1208920bd6d6ac8c01 100644
--- a/Parser/Gmsh.tab.cpp
+++ b/Parser/Gmsh.tab.cpp
@@ -191,7 +191,7 @@
 
 #line 1 "Gmsh.y"
  
-// $Id: Gmsh.tab.cpp,v 1.178 2004-01-29 22:03:58 geuzaine Exp $
+// $Id: Gmsh.tab.cpp,v 1.179 2004-02-05 16:53:58 geuzaine Exp $
 //
 // Copyright (C) 1997-2003 C. Geuzaine, J.-F. Remacle
 //
@@ -6574,7 +6574,7 @@ case 280:
 	Post_View *v = (Post_View *)List_Pointer_Test(CTX.post.list, (int)yyvsp[-3].d);
 	if(v){
 	  FixRelativePath(yyvsp[-1].c, tmpstring);
-	  WriteView(0, v, tmpstring);
+	  WriteView(v, tmpstring, 0, 0);
 	}
       }
       else{
diff --git a/Parser/Gmsh.y b/Parser/Gmsh.y
index 5d99612b1a7dff00b0e4a86b17bcae0c528bf426..2d5361ab8e88c25c6e2b759de487f599132632a0 100644
--- a/Parser/Gmsh.y
+++ b/Parser/Gmsh.y
@@ -1,5 +1,5 @@
 %{ 
-// $Id: Gmsh.y,v 1.157 2004-01-29 22:03:59 geuzaine Exp $
+// $Id: Gmsh.y,v 1.158 2004-02-05 16:53:59 geuzaine Exp $
 //
 // Copyright (C) 1997-2003 C. Geuzaine, J.-F. Remacle
 //
@@ -2034,7 +2034,7 @@ Command :
 	Post_View *v = (Post_View *)List_Pointer_Test(CTX.post.list, (int)$4);
 	if(v){
 	  FixRelativePath($6, tmpstring);
-	  WriteView(0, v, tmpstring);
+	  WriteView(v, tmpstring, 0, 0);
 	}
       }
       else{
diff --git a/Parser/Gmsh.yy.cpp b/Parser/Gmsh.yy.cpp
index 5a8b877701e93ad6afa209d1bd74ca6c10bae16b..ae86b5dc36ecaceb448aba83f9ed0c0a56c73aab 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.177 2004-01-29 22:04:02 geuzaine Exp $
+ * $Header: /cvsroot/gmsh/Parser/Gmsh.yy.cpp,v 1.178 2004-02-05 16:54:02 geuzaine Exp $
  */
 
 #define FLEX_SCANNER
@@ -1015,7 +1015,7 @@ char *yytext;
 #define INITIAL 0
 #line 2 "Gmsh.l"
 
-// $Id: Gmsh.yy.cpp,v 1.177 2004-01-29 22:04:02 geuzaine Exp $
+// $Id: Gmsh.yy.cpp,v 1.178 2004-02-05 16:54:02 geuzaine Exp $
 //
 // Copyright (C) 1997-2003 C. Geuzaine, J.-F. Remacle
 //