diff --git a/Common/DefaultOptions.h b/Common/DefaultOptions.h
index d379159035bff9912e714c9312d1936f009b0674..5dd751894e802dc14231505792eb8e33b7d03c34 100644
--- a/Common/DefaultOptions.h
+++ b/Common/DefaultOptions.h
@@ -1243,8 +1243,8 @@ StringXNumber ViewOptions_Number[] = {
     "Show element boundaries?" },
   { F|O, "ShowScale" , opt_view_show_scale , 1. ,
     "Show value scale?" },
-  { F|O, "ShowTime" , opt_view_show_time , 1. ,
-    "Show time value in the scale? (1=only if NbTimeStep>1, 2=always)" },
+  { F|O, "ShowTime" , opt_view_show_time , 3. ,
+    "Time display mode (0=hidden, 1=value if multiple, 2=value always, 3=step if multiple, 4=step always)" },
   { F|O, "SmoothNormals" , opt_view_smooth_normals , 0. ,
     "Smooth the normals?" },
   { F|O, "Stipple" , opt_view_use_stipple , 0. ,
diff --git a/Common/Options.cpp b/Common/Options.cpp
index e685fb8509d7641543d5d0062adab1c574048501..d7b4bb4b8b2269cce6fe66ba0ea23d648bbb7f0b 100644
--- a/Common/Options.cpp
+++ b/Common/Options.cpp
@@ -1,4 +1,4 @@
-// $Id: Options.cpp,v 1.249 2005-07-03 08:02:23 geuzaine Exp $
+// $Id: Options.cpp,v 1.250 2005-07-08 22:07:37 geuzaine Exp $
 //
 // Copyright (C) 1997-2005 C. Geuzaine, J.-F. Remacle
 //
@@ -5844,10 +5844,12 @@ double opt_view_show_time(OPT_ARGS_NUM)
   GET_VIEW(0.);
   if(action & GMSH_SET) {
     v->ShowTime = (int)val;
+    if(v->ShowTime < 0 || v->ShowTime > 4)
+      v->ShowTime = 0;
   }
 #if defined(HAVE_FLTK)
   if(_gui_action_valid(action, num))
-    WID->view_butt[8]->value(v->ShowTime);
+    WID->view_choice[12]->value(v->ShowTime);
 #endif
   return v->ShowTime;
 }
diff --git a/Fltk/Callbacks.cpp b/Fltk/Callbacks.cpp
index 9655ebbd5c7f4f4ff06e0e1a75cdccd485c365ca..633a2ce993d777385aedf2c5c33aab955f5150b4 100644
--- a/Fltk/Callbacks.cpp
+++ b/Fltk/Callbacks.cpp
@@ -1,4 +1,4 @@
-// $Id: Callbacks.cpp,v 1.360 2005-07-04 15:07:40 remacle Exp $
+// $Id: Callbacks.cpp,v 1.361 2005-07-08 22:07:38 geuzaine Exp $
 //
 // Copyright (C) 1997-2005 C. Geuzaine, J.-F. Remacle
 //
@@ -3651,6 +3651,7 @@ void view_options_ok_cb(CALLBACK_ARGS)
   double boundary = opt_view_boundary(current, GMSH_GET, 0);
   double external_view = opt_view_external_view(current, GMSH_GET, 0);
   double gen_raise_view = opt_view_gen_raise_view(current, GMSH_GET, 0);
+  double show_time = opt_view_show_time(current, GMSH_GET, 0);
 
   double type = opt_view_type(current, GMSH_GET, 0);
   double saturate_values = opt_view_saturate_values(current, GMSH_GET, 0);
@@ -3660,7 +3661,6 @@ void view_options_ok_cb(CALLBACK_ARGS)
   double show_scale = opt_view_show_scale(current, GMSH_GET, 0);
   double auto_position = opt_view_auto_position(current, GMSH_GET, 0);
   double axes_auto_position = opt_view_axes_auto_position(current, GMSH_GET, 0);
-  double show_time = opt_view_show_time(current, GMSH_GET, 0);
   double draw_strings = opt_view_draw_strings(current, GMSH_GET, 0);
   double light = opt_view_light(current, GMSH_GET, 0);
   double light_two_side = opt_view_light_two_side(current, GMSH_GET, 0);
@@ -3862,14 +3862,18 @@ void view_options_ok_cb(CALLBACK_ARGS)
       if(force || (val != boundary))
         opt_view_boundary(i, GMSH_SET, val);
 
-      val = WID->view_choice[10]->value()-1;
+      val = WID->view_choice[10]->value() - 1;
       if(force || (val != external_view))
         opt_view_external_view(i, GMSH_SET, val);
 
-      val = WID->view_choice[11]->value()-1;
+      val = WID->view_choice[11]->value() - 1;
       if(force || (val != gen_raise_view))
         opt_view_gen_raise_view(i, GMSH_SET, val);
 
+      val = WID->view_choice[12]->value();
+      if(force || (val != show_time))
+        opt_view_show_time(i, GMSH_SET, val);
+
       // view_butts
 
       val = WID->view_butt[0]->value();
@@ -3901,10 +3905,6 @@ void view_options_ok_cb(CALLBACK_ARGS)
       if(force || (val != axes_auto_position))
         opt_view_axes_auto_position(i, GMSH_SET, val);
 
-      val = WID->view_butt[8]->value();
-      if(force || (val != show_time))
-        opt_view_show_time(i, GMSH_SET, val);
-
       val = WID->view_butt[5]->value();
       if(force || (val != draw_strings))
         opt_view_draw_strings(i, GMSH_SET, val);
diff --git a/Fltk/GUI.cpp b/Fltk/GUI.cpp
index fb511d3eed9179d34361eaa0d82fcb00adfc63bd..c14e4cfd7fac9dff4b2eb78b0456a4540180484a 100644
--- a/Fltk/GUI.cpp
+++ b/Fltk/GUI.cpp
@@ -1,4 +1,4 @@
-// $Id: GUI.cpp,v 1.447 2005-07-04 15:07:40 remacle Exp $
+// $Id: GUI.cpp,v 1.448 2005-07-08 22:07:38 geuzaine Exp $
 //
 // Copyright (C) 1997-2005 C. Geuzaine, J.-F. Remacle
 //
@@ -2860,10 +2860,17 @@ void GUI::create_option_window()
       view_butt[4]->down_box(GMSH_TOGGLE_BOX);
       view_butt[4]->selection_color(GMSH_TOGGLE_COLOR);
 
-      view_butt[8] = new Fl_Check_Button(L + width / 2, 2 * WB + 2 * BH, BW / 2 - WB, BH, "Step value");
-      view_butt[8]->type(FL_TOGGLE_BUTTON);
-      view_butt[8]->down_box(GMSH_TOGGLE_BOX);
-      view_butt[8]->selection_color(GMSH_TOGGLE_COLOR);
+      static Fl_Menu_Item time_display[] = {
+	{"Hidden", 0, 0, 0},
+	{"Value if multiple", 0, 0, 0},
+	{"Value always", 0, 0, 0},
+	{"Step if multiple", 0, 0, 0},
+	{"Step always", 0, 0, 0},
+	{0}
+      };
+      view_choice[12] = new Fl_Choice(L + width / 2, 2 * WB + 2 * BH, IW, BH, "Time");
+      view_choice[12]->menu(time_display);
+      view_choice[12]->align(FL_ALIGN_RIGHT);
 
       view_butt[5] = new Fl_Check_Button(L + width / 2, 2 * WB + 3 * BH, BW / 2 - WB, BH, "Annotations");
       view_butt[5]->tooltip("(Alt+n)");
@@ -3353,13 +3360,11 @@ void GUI::update_view_window(int num)
     view_value[50]->deactivate();
     view_butt_rep[0]->deactivate();
     view_butt_rep[1]->deactivate();
-    view_butt[8]->deactivate();
   }
   else {
     view_value[50]->activate();
     view_butt_rep[0]->activate();
     view_butt_rep[1]->activate();
-    view_butt[8]->activate();
   }
   view_value[50]->maximum(v->NbTimeStep - 1);
   opt_view_timestep(num, GMSH_GUI, 0);
diff --git a/Graphics/Graph2D.cpp b/Graphics/Graph2D.cpp
index db43a949dfa365bce1f7606217d9910e3634607b..e701ef64ee8a1f66c69a243044a97e81a0f0bd94 100644
--- a/Graphics/Graph2D.cpp
+++ b/Graphics/Graph2D.cpp
@@ -1,4 +1,4 @@
-// $Id: Graph2D.cpp,v 1.53 2005-03-21 00:42:04 geuzaine Exp $
+// $Id: Graph2D.cpp,v 1.54 2005-07-08 22:07:39 geuzaine Exp $
 //
 // Copyright (C) 1997-2005 C. Geuzaine, J.-F. Remacle
 //
@@ -179,6 +179,11 @@ static void Draw_Graph2D(Post_View * v, double xtop, double ytop,
       sprintf(tmp, v->Format, *(double *)List_Pointer(v->Time, v->TimeStep));
       sprintf(label, "%s (%s)", v->Name, tmp);
     }
+    else if(v->Type == DRAW_POST_2D_SPACE &&
+       ((v->ShowTime == 3 && List_Nbr(v->Time) > 1) ||
+	(v->ShowTime == 4 && List_Nbr(v->Time) > 0))){
+      sprintf(label, "%s (%s)", v->Name, v->TimeStep);
+    }
     else
       sprintf(label, "%s", v->Name);
     glRasterPos2d(xtop, ytop + font_h + tic);
diff --git a/Graphics/Scale.cpp b/Graphics/Scale.cpp
index 0e1f5d1853a174131e1c371a911643a69f4b2235..b9ec804ed3a850d10e8b928c7fb7b620e8ca63d9 100644
--- a/Graphics/Scale.cpp
+++ b/Graphics/Scale.cpp
@@ -1,4 +1,4 @@
-// $Id: Scale.cpp,v 1.60 2005-03-13 09:10:35 geuzaine Exp $
+// $Id: Scale.cpp,v 1.61 2005-07-08 22:07:39 geuzaine Exp $
 //
 // Copyright (C) 1997-2005 C. Geuzaine, J.-F. Remacle
 //
@@ -273,6 +273,10 @@ void draw_scale(Post_View * v,
     sprintf(tmp, v->Format, *(double *)List_Pointer(v->Time, v->TimeStep));
     sprintf(label, "%s (%s)", v->Name, tmp);
   }
+  else if((v->ShowTime == 3 && List_Nbr(v->Time) > 1) ||
+	  (v->ShowTime == 4 && List_Nbr(v->Time) > 0)){
+    sprintf(label, "%s (%d)", v->Name, v->TimeStep);
+  }
   else
     sprintf(label, "%s", v->Name);
 
diff --git a/doc/texinfo/opt_mesh.texi b/doc/texinfo/opt_mesh.texi
index bfb4f87e771d2e4b14f5636161891dec8d15a6d1..091996fbb2526282b07073332fed588b9dcf983d 100644
--- a/doc/texinfo/opt_mesh.texi
+++ b/doc/texinfo/opt_mesh.texi
@@ -15,7 +15,7 @@ Default value: @code{1}@*
 Saved in: @code{General.OptionsFileName}
 
 @item Mesh.Algorithm3D
-3D mesh algorithm (1=isotropic, 4=netgen)@*
+3D mesh algorithm (1=isotropic, 4=netgen, 5=tetgen)@*
 Default value: @code{1}@*
 Saved in: @code{General.OptionsFileName}
 
diff --git a/doc/texinfo/opt_view.texi b/doc/texinfo/opt_view.texi
index 084ff33392ea5c87e4a184e6ff978e64719a4b2b..b3011f3b8cafa40ae3f6443f0170afd96dbc6aeb 100644
--- a/doc/texinfo/opt_view.texi
+++ b/doc/texinfo/opt_view.texi
@@ -525,8 +525,8 @@ Default value: @code{1}@*
 Saved in: @code{General.OptionsFileName}
 
 @item View.ShowTime
-Show time value in the scale? (1=only if NbTimeStep>1, 2=always)@*
-Default value: @code{1}@*
+Time display mode (0=hidden, 1=value if multiple, 2=value always, 3=step if multiple, 4=step always)@*
+Default value: @code{3}@*
 Saved in: @code{General.OptionsFileName}
 
 @item View.SmoothNormals