diff --git a/Common/Views.cpp b/Common/Views.cpp
index ef9e02e1f7d1321045b92213ed1851799d3fbfa3..8d1779c26ad52dc47ed2583b6333c1be0596facf 100644
--- a/Common/Views.cpp
+++ b/Common/Views.cpp
@@ -1,4 +1,4 @@
-/* $Id: Views.cpp,v 1.19 2000-12-21 10:41:02 geuzaine Exp $ */
+/* $Id: Views.cpp,v 1.20 2000-12-26 20:45:42 geuzaine Exp $ */
 
 #include "Gmsh.h"
 #include "Views.h"
@@ -36,6 +36,8 @@ void BeginView(int allocate){
   ActualView->NbSS = ActualView->NbVS = ActualView->NbTS = 0;
 
   if(allocate){
+    ActualView->datasize = sizeof(double);
+
     ActualView->Time = List_Create(100,1000,sizeof(double));
 
     ActualView->SP = List_Create(100,1000,sizeof(double));
@@ -472,7 +474,7 @@ extern int Force_ViewNumber;
 
 void Read_View(FILE *file, char *filename){
   char   str[NAME_STR_L], name[NAME_STR_L];
-  int    nb, format, testone, swap=0;
+  int    nb, format, size, testone, swap;
   double version;
 
   while (1) {
@@ -487,14 +489,28 @@ void Read_View(FILE *file, char *filename){
     /*  F o r m a t  */
 
     if (!strncmp(&str[1], "PostFormat", 10)){
-      fscanf(file, "%lf %d\n", &version, &format) ;
-      if(version < 0.995){
-        Msg(ERROR, "The Version of this File is too old (<0.995)");
+      fscanf(file, "%lf %d %d\n", &version, &format, &size) ;
+      if(version < 1.0){
+        Msg(ERROR, "The Version of this File is too old (%g < 1.0)", version);
+        return;
+      }
+      if(size == sizeof(double))
+	Msg(DEBUG, "Data is in Double Precision Format (size==%d)", size);
+      else if(size == sizeof(float))
+	Msg(DEBUG, "Data is in Single Precision Format (size==%d)", size);
+      else{
+        Msg(ERROR, "Unknown Type of Data (Size = %d) in Post-Processing File", 
+	    size);
         return;
       }
-      if(format == 0) format = LIST_FORMAT_ASCII ;
-      else if(format == 1) format = LIST_FORMAT_BINARY ;
-      else Msg(FATAL, "Unknown Format for View");
+      if(format == 0)
+	format = LIST_FORMAT_ASCII ;
+      else if(format == 1)
+	format = LIST_FORMAT_BINARY ;
+      else{
+	Msg(ERROR, "Unknown Format for View");
+	return ;
+      }
     }
 
     /*  V i e w  */
@@ -510,6 +526,7 @@ void Read_View(FILE *file, char *filename){
              &ActualView->NbST, &ActualView->NbVT, &ActualView->NbTT, 
              &ActualView->NbSS, &ActualView->NbVS, &ActualView->NbTS);
 
+      swap = 0 ;
       if(format == LIST_FORMAT_BINARY){
 	fread(&testone, sizeof(int), 1, file);
 	if(testone != 1){
@@ -518,49 +535,51 @@ void Read_View(FILE *file, char *filename){
 	}
       }
 
+      ActualView->datasize = size ;
+
       // Time values
       ActualView->Time = List_CreateFromFile(ActualView->NbTimeStep, 
-					     sizeof(double), file, format, swap);
+					     size, file, format, swap);
 
       // Points
       nb = ActualView->NbSP ? ActualView->NbSP * (ActualView->NbTimeStep  +3) : 0 ;
-      ActualView->SP = List_CreateFromFile(nb, sizeof(double), file, format, swap);
+      ActualView->SP = List_CreateFromFile(nb, size, file, format, swap);
 
       nb = ActualView->NbVP ? ActualView->NbVP * (ActualView->NbTimeStep*3+3) : 0 ;
-      ActualView->VP = List_CreateFromFile(nb, sizeof(double), file, format, swap);
+      ActualView->VP = List_CreateFromFile(nb, size, file, format, swap);
 
       nb = ActualView->NbTP ? ActualView->NbTP * (ActualView->NbTimeStep*9+3) : 0 ;
-      ActualView->TP = List_CreateFromFile(nb, sizeof(double), file, format, swap);
+      ActualView->TP = List_CreateFromFile(nb, size, file, format, swap);
 
       // Lines
       nb = ActualView->NbSL ? ActualView->NbSL * (ActualView->NbTimeStep*2  +6) : 0 ;
-      ActualView->SL = List_CreateFromFile(nb, sizeof(double), file, format, swap);
+      ActualView->SL = List_CreateFromFile(nb, size, file, format, swap);
 
       nb = ActualView->NbVL ? ActualView->NbVL * (ActualView->NbTimeStep*2*3+6) : 0 ;
-      ActualView->VL = List_CreateFromFile(nb, sizeof(double), file, format, swap);
+      ActualView->VL = List_CreateFromFile(nb, size, file, format, swap);
 
       nb = ActualView->NbTL ? ActualView->NbTL * (ActualView->NbTimeStep*2*9+6) : 0 ;
-      ActualView->TL = List_CreateFromFile(nb, sizeof(double), file, format, swap);
+      ActualView->TL = List_CreateFromFile(nb, size, file, format, swap);
 
       // Triangles
       nb = ActualView->NbST ? ActualView->NbST * (ActualView->NbTimeStep*3  +9) : 0 ;
-      ActualView->ST = List_CreateFromFile(nb, sizeof(double), file, format, swap);
+      ActualView->ST = List_CreateFromFile(nb, size, file, format, swap);
 
       nb = ActualView->NbVT ? ActualView->NbVT * (ActualView->NbTimeStep*3*3+9) : 0 ;
-      ActualView->VT = List_CreateFromFile(nb, sizeof(double), file, format, swap);
+      ActualView->VT = List_CreateFromFile(nb, size, file, format, swap);
 
       nb = ActualView->NbTT ? ActualView->NbTT * (ActualView->NbTimeStep*3*9+9) : 0 ;
-      ActualView->TT = List_CreateFromFile(nb, sizeof(double), file, format, swap);
+      ActualView->TT = List_CreateFromFile(nb, size, file, format, swap);
 
       // Tetrahedra
       nb = ActualView->NbSS ? ActualView->NbSS * (ActualView->NbTimeStep*4  +12) : 0 ;
-      ActualView->SS = List_CreateFromFile(nb, sizeof(double), file, format, swap);
+      ActualView->SS = List_CreateFromFile(nb, size, file, format, swap);
 
       nb = ActualView->NbVS ? ActualView->NbVS * (ActualView->NbTimeStep*4*3+12) : 0 ;
-      ActualView->VS = List_CreateFromFile(nb, sizeof(double), file, format, swap);
+      ActualView->VS = List_CreateFromFile(nb, size, file, format, swap);
 
       nb = ActualView->NbTS ? ActualView->NbTS * (ActualView->NbTimeStep*4*9+12) : 0 ;
-      ActualView->TS = List_CreateFromFile(nb, sizeof(double), file, format, swap);
+      ActualView->TS = List_CreateFromFile(nb, size, file, format, swap);
 
       Msg(DEBUG, "Read View '%s' (%d TimeSteps): %d %d %d %d %d %d %d %d %d %d %d %d",
           name, ActualView->NbTimeStep,
diff --git a/Common/Views.h b/Common/Views.h
index 6c23d463365d59b7dea784e830530c63beaaeee7..28291b1b1b9b5c8ab91135034a1eaefc6807f7d5 100644
--- a/Common/Views.h
+++ b/Common/Views.h
@@ -1,4 +1,4 @@
-/* $Id: Views.h,v 1.14 2000-12-17 21:17:29 remacle Exp $ */
+/* $Id: Views.h,v 1.15 2000-12-26 20:45:42 geuzaine Exp $ */
 #ifndef _VIEWS_H_
 #define _VIEWS_H_
 
@@ -11,6 +11,7 @@ typedef struct{
   char FileName[NAME_STR_L], Name[NAME_STR_L];
 
   /* the data */
+  int datasize; // size(double) or sizeof(float)
   List_T *Time;
   int NbSP, NbVP, NbTP;
   List_T *SP, *VP, *TP; // points
diff --git a/DataStr/List.cpp b/DataStr/List.cpp
index d3248a9aad85ffcccd16f36a376295c23f53468f..2dc3d5915ccfd12dbe0e7beae1be9b70aef4280f 100644
--- a/DataStr/List.cpp
+++ b/DataStr/List.cpp
@@ -1,4 +1,4 @@
-/* $Id: List.cpp,v 1.10 2000-12-11 16:22:43 geuzaine Exp $ */
+/* $Id: List.cpp,v 1.11 2000-12-26 20:45:42 geuzaine Exp $ */
 
 #include <stdlib.h>
 #include <stdio.h>
@@ -376,7 +376,16 @@ List_T *List_CreateFromFile(int n, int size, FILE *file, int format, int swap){
   liste->n = n;
   switch(format){
   case LIST_FORMAT_ASCII :
-    for(i=0;i<n;i++) fscanf(file, "%lf", (double*)&liste->array[i*size]) ;
+    if(size == sizeof(double))
+      for(i=0;i<n;i++) fscanf(file, "%lf", (double*)&liste->array[i*size]) ;
+    else if(size == sizeof(float))
+      for(i=0;i<n;i++) fscanf(file, "%f", (float*)&liste->array[i*size]) ;
+    else if(size == sizeof(int))
+      for(i=0;i<n;i++) fscanf(file, "%d", (int*)&liste->array[i*size]) ;
+    else{
+      Msg(ERROR, "Unknown Type of Data to Create List From");
+      return NULL;
+    }
     return liste;
   case LIST_FORMAT_BINARY :
     fread(liste->array, size, n, file);
@@ -396,7 +405,14 @@ void List_WriteToFile(List_T *liste, FILE *file, int format){
 
   switch(format){
   case LIST_FORMAT_ASCII :
-    for(i=0;i<n;i++) fprintf(file, "%g ", *((double*)&liste->array[i*liste->size])) ;
+    if(liste->size == sizeof(double))
+      for(i=0;i<n;i++) fprintf(file, "%g ", *((double*)&liste->array[i*liste->size])) ;
+    else if(liste->size == sizeof(float))
+      for(i=0;i<n;i++) fprintf(file, "%g ", *((float*)&liste->array[i*liste->size])) ;
+    else if(liste->size == sizeof(int))
+      for(i=0;i<n;i++) fprintf(file, "%d ", *((int*)&liste->array[i*liste->size])) ;
+    else
+      Msg(ERROR, "Unknown Type of Data to Write List to File");
     fprintf(file, "\n");
     break;
   case LIST_FORMAT_BINARY :
diff --git a/Unix/Widgets.cpp b/Unix/Widgets.cpp
index 46cafa5cf2b55bbb3dd58ea05d97795ebd7bfc19..1a163b043bfbd734514e2d5a0f6bfeeb68479445 100644
--- a/Unix/Widgets.cpp
+++ b/Unix/Widgets.cpp
@@ -1,4 +1,4 @@
-/* $Id: Widgets.cpp,v 1.25 2000-12-26 17:40:18 geuzaine Exp $ */
+/* $Id: Widgets.cpp,v 1.26 2000-12-26 20:45:42 geuzaine Exp $ */
 
 #include "Gmsh.h"
 #include "GmshUI.h"
@@ -673,7 +673,7 @@ void CreateWidgets_FD(Widgets_T *w){
   w->FD.saveAsButt[10] = XmCreatePushButton(w->FD.saveAsPane[0], "MsaveAsButt10", arg, i);
   XtManageChild(w->FD.saveAsButt[10]);
   i=0;
-  XtSetArg(arg[i], XmNlabelString, XmStringCreateSimple("YUV")); i++;
+  XtSetArg(arg[i], XmNlabelString, XmStringCreateSimple("UCB YUV")); i++;
   w->FD.saveAsButt[11] = XmCreatePushButton(w->FD.saveAsPane[0], "MsaveAsButt11", arg, i);
   XtManageChild(w->FD.saveAsButt[11]);
 
diff --git a/doc/FORMATS b/doc/FORMATS
index f1511672c3ef3f7f1d320f308dcdc0636918edf7..b97f58a373f5009b5bc999bb72b20f9bbb7a8c5d 100644
--- a/doc/FORMATS
+++ b/doc/FORMATS
@@ -1,7 +1,7 @@
-$Id: FORMATS,v 1.5 2000-12-11 22:09:43 geuzaine Exp $
+$Id: FORMATS,v 1.6 2000-12-26 20:45:42 geuzaine Exp $
 
 This document describes the mesh and post-processing file formats for
-Gmsh, version >= 0.995. 
+Gmsh, version >= 1.0. 
 
 (This document deals only with the import/export interfaces for
 Gmsh. The language driving Gmsh's behaviour for defining geometries,
@@ -54,7 +54,7 @@ multiple) post-processing views (enclosed between $View/$EndView
 pairs).
 
     $PostFormat
-    version-number file-type
+    version-number file-type data-size
     $EndPostFormat
 
     $View
@@ -79,10 +79,13 @@ pairs).
     $endView
 
 version-number is a floating point number giving the version of
-Gmsh to which the file is destined (e.g. 0.995).
+Gmsh to which the file is destined (e.g. 1.0).
 
 file-type is an integer equal to 0 in for the ascii file format.
 
+data-size is an integer equal to the size of the floating point
+numbers used in the file (usually, data-size == sizeof(double)).
+
 view-name is a string containing the name of the view (max. 256 characters)
 
 nb-time-step is an integer giving the number of time steps in the view
@@ -133,7 +136,7 @@ file in binary format:
 int one = 1;
 
 fprintf(file, "$PostFormat\n");
-fprintf(file, "%g %d\n", 0.995, 1);
+fprintf(file, "%g %d %d\n", 1.0, 1, sizeof(double));
 fprintf(file, "$EndPostFormat\n");
 
 fprintf(file, "$View\n");
diff --git a/www/gmsh.html b/www/gmsh.html
index 582b0adba608ec5c98a7a7e1cc07cc4f78f795fc..0bbb1f8a5d5e3b73393f6d7c62633ce0ab18d656 100644
--- a/www/gmsh.html
+++ b/www/gmsh.html
@@ -304,7 +304,9 @@ files.
   <td><font face="Helvetica, Arial" size=-1> 
 
 New in 1.00: Added PPM and YUV output; Corrected nested If/Endif;
-Corrected seg. fault on repeated saves;
+Corrected seg. fault on repeated saves; Slightly changed the
+post-processing file format to allow both single and double precision
+numbers.
 <p>
 New in 0.999: Added JPEG output and easy MPEG generation (see t8.geo in the
 tutorial); Clean up of export functions; small fixes; Linux versions