diff --git a/Geo/MVertex.cpp b/Geo/MVertex.cpp
index 0269e59a53f5f28f85072cdec648f61b95113d79..50214ebd5fec65033000adfdc4e8bb55083f57f2 100644
--- a/Geo/MVertex.cpp
+++ b/Geo/MVertex.cpp
@@ -31,9 +31,13 @@ void MVertex::writeMSH(FILE *fp, bool binary, bool saveParametric, double scalin
   if(_index < 0) return; // negative index vertices are never saved
 
   int myDim = 0, myTag = 0;
-  if(saveParametric && onWhat()){
-    myDim = onWhat()->dim(); 
-    myTag = onWhat()->tag();
+  if(saveParametric){
+    if(onWhat()){
+      myDim = onWhat()->dim(); 
+      myTag = onWhat()->tag();
+    }
+    else
+      saveParametric = false;
   }
 
   if(!binary){
diff --git a/Geo/MVertex.h b/Geo/MVertex.h
index ab4cf5fa8e543f09701d819af60c8d82b5805aee..29bd41142ed4cd62491da82f3a13a3ed0348173f 100644
--- a/Geo/MVertex.h
+++ b/Geo/MVertex.h
@@ -91,7 +91,7 @@ class MVertex{
   inline void setIndex(int index) { _index = index; }
 
   // get/set ith parameter
-  virtual bool getParameter(int i, double &par) const{ return false; }
+  virtual bool getParameter(int i, double &par) const { par = 0.; return false; }
   virtual bool setParameter(int i, double par){ return false; }
 
   // measure distance to another vertex
@@ -123,21 +123,14 @@ class MEdgeVertex : public MVertex{
  protected:
   double _u, _lc;
  public :
-  MEdgeVertex(double x, double y, double z, GEntity *ge, double u, double lc = -1.0, int num = 0) 
+  MEdgeVertex(double x, double y, double z, GEntity *ge, double u, double lc = -1.0,
+              int num = 0) 
     : MVertex(x, y, z, ge,num), _u(u), _lc(lc)
   {
   }
   virtual ~MEdgeVertex(){}
-  virtual bool getParameter(int i, double &par) const 
-  { 
-    par = _u; 
-    return true; 
-  }
-  virtual bool setParameter(int i, double par)
-  { 
-    _u = par; 
-    return true; 
-  }
+  virtual bool getParameter(int i, double &par) const { par = _u; return true; }
+  virtual bool setParameter(int i, double par){ _u = par; return true; }
   double getLc() const { return _lc; }
 };
 
@@ -145,16 +138,12 @@ class MFaceVertex : public MVertex{
  protected:
   double _u, _v;
  public :
-  MFaceVertex(double x, double y, double z, GEntity *ge, double u, double v, int num =0) 
+  MFaceVertex(double x, double y, double z, GEntity *ge, double u, double v, int num = 0) 
     : MVertex(x, y, z, ge, num), _u(u), _v(v)
   {
   }
   virtual ~MFaceVertex(){}
-  virtual bool getParameter(int i, double &par) const 
-  { 
-    par = (i ? _v : _u);
-    return true; 
-  }
+  virtual bool getParameter(int i, double &par) const { par = (i ? _v : _u); return true; }
   virtual bool setParameter(int i, double par)
   {
     if(!i)