diff --git a/Geo/Makefile b/Geo/Makefile
index 7cc431cdf0290ed5a098e8eb55a91d3d7699c52c..32b798047dff8480fa4e911f9e9ad8e8a2d05939 100644
--- a/Geo/Makefile
+++ b/Geo/Makefile
@@ -1,4 +1,4 @@
-# $Id: Makefile,v 1.152 2007-07-26 16:35:58 geuzaine Exp $
+# $Id: Makefile,v 1.153 2007-07-31 20:07:38 geuzaine Exp $
 #
 # Copyright (C) 1997-2007 C. Geuzaine, J.-F. Remacle
 #
@@ -223,7 +223,8 @@ GModelIO_F.o: GModelIO_F.cpp GModel.h GVertex.h GEntity.h Range.h \
   ExtrudeParams.h ../Common/SmoothData.h GFace.h GEdgeLoop.h Pair.h \
   GRegion.h ../Common/Message.h ../Post/Views.h ../Post/ColorTable.h \
   ../Common/VertexArray.h ../Post/AdaptiveViews.h ../Common/GmshMatrix.h \
-  FFace.h FEdge.h FVertex.h ../Mesh/meshGFace.h GModelIO_F.h
+  FFace.h FEdge.h FVertex.h ../Mesh/meshGFace.h ../Geo/MVertex.h \
+  GModelIO_F.h
 GModelIO_CGNS.o: GModelIO_CGNS.cpp GModel.h GVertex.h GEntity.h Range.h \
   SPoint3.h SBoundingBox3d.h ../Common/GmshDefines.h MVertex.h GPoint.h \
   SPoint2.h GEdge.h SVector3.h MElement.h MEdge.h ../Common/Hash.h \
diff --git a/Mesh/Makefile b/Mesh/Makefile
index daeebbc567e1e27d2ab250e27a635e9937ffd359..836d395680b669c2f98ad07712e29480b968410a 100644
--- a/Mesh/Makefile
+++ b/Mesh/Makefile
@@ -1,4 +1,4 @@
-# $Id: Makefile,v 1.176 2007-07-26 16:35:58 geuzaine Exp $
+# $Id: Makefile,v 1.177 2007-07-31 20:07:38 geuzaine Exp $
 #
 # Copyright (C) 1997-2007 C. Geuzaine, J.-F. Remacle
 #
@@ -150,9 +150,9 @@ meshGEdgeExtruded.o: meshGEdgeExtruded.cpp ../Geo/ExtrudeParams.h \
   ../Geo/Pair.h ../Geo/ExtrudeParams.h ../Geo/GRegion.h ../Geo/GEntity.h \
   ../Geo/MElement.h ../Geo/ExtrudeParams.h ../Geo/SBoundingBox3d.h \
   ../Common/Message.h
-meshGFace.o: meshGFace.cpp meshGFace.h meshGFaceDelaunayInsertion.h \
-  ../Geo/MElement.h ../Common/GmshDefines.h ../Geo/MVertex.h \
-  ../Geo/SPoint3.h ../Geo/MEdge.h ../Geo/MVertex.h ../Geo/SVector3.h \
+meshGFace.o: meshGFace.cpp meshGFace.h ../Geo/MVertex.h ../Geo/SPoint3.h \
+  meshGFaceDelaunayInsertion.h ../Geo/MElement.h ../Common/GmshDefines.h \
+  ../Geo/MVertex.h ../Geo/MEdge.h ../Geo/MVertex.h ../Geo/SVector3.h \
   ../Geo/SPoint3.h ../Common/Hash.h ../Geo/MFace.h ../Geo/MVertex.h \
   ../Geo/SVector3.h ../Numeric/Numeric.h ../Common/Context.h \
   ../DataStr/List.h DivideAndConquer.h BackgroundMesh.h ../Geo/GVertex.h \
@@ -170,18 +170,19 @@ meshGFace.o: meshGFace.cpp meshGFace.h meshGFaceDelaunayInsertion.h \
   ../Common/OS.h BDS.h ../Post/Views.h ../Post/ColorTable.h \
   ../Post/AdaptiveViews.h ../Common/GmshMatrix.h
 meshGFaceTransfinite.o: meshGFaceTransfinite.cpp meshGFace.h \
-  ../Geo/GVertex.h ../Geo/GEntity.h ../Geo/Range.h ../Geo/SPoint3.h \
-  ../Geo/SBoundingBox3d.h ../Geo/SPoint3.h ../Common/GmshDefines.h \
-  ../Geo/MVertex.h ../Geo/SPoint3.h ../Geo/GPoint.h ../Geo/SPoint2.h \
-  ../Geo/GEdge.h ../Geo/GEntity.h ../Geo/GVertex.h ../Geo/SVector3.h \
-  ../Geo/SPoint3.h ../Geo/SPoint3.h ../Geo/SPoint2.h ../Geo/MElement.h \
-  ../Geo/MVertex.h ../Geo/MEdge.h ../Geo/MVertex.h ../Geo/SVector3.h \
-  ../Common/Hash.h ../Geo/MFace.h ../Geo/MVertex.h ../Geo/SVector3.h \
-  ../Numeric/Numeric.h ../Common/Context.h ../DataStr/List.h \
-  ../Geo/ExtrudeParams.h ../Common/SmoothData.h ../Geo/GFace.h \
-  ../Geo/GPoint.h ../Geo/GEntity.h ../Geo/GEdgeLoop.h ../Geo/GEdge.h \
-  ../Geo/MElement.h ../Geo/SPoint2.h ../Geo/SVector3.h ../Geo/Pair.h \
-  ../Geo/ExtrudeParams.h ../Common/Message.h
+  ../Geo/MVertex.h ../Geo/SPoint3.h ../Geo/GVertex.h ../Geo/GEntity.h \
+  ../Geo/Range.h ../Geo/SPoint3.h ../Geo/SBoundingBox3d.h \
+  ../Geo/SPoint3.h ../Common/GmshDefines.h ../Geo/MVertex.h \
+  ../Geo/GPoint.h ../Geo/SPoint2.h ../Geo/GEdge.h ../Geo/GEntity.h \
+  ../Geo/GVertex.h ../Geo/SVector3.h ../Geo/SPoint3.h ../Geo/SPoint3.h \
+  ../Geo/SPoint2.h ../Geo/MElement.h ../Geo/MVertex.h ../Geo/MEdge.h \
+  ../Geo/MVertex.h ../Geo/SVector3.h ../Common/Hash.h ../Geo/MFace.h \
+  ../Geo/MVertex.h ../Geo/SVector3.h ../Numeric/Numeric.h \
+  ../Common/Context.h ../DataStr/List.h ../Geo/ExtrudeParams.h \
+  ../Common/SmoothData.h ../Geo/GFace.h ../Geo/GPoint.h ../Geo/GEntity.h \
+  ../Geo/GEdgeLoop.h ../Geo/GEdge.h ../Geo/MElement.h ../Geo/SPoint2.h \
+  ../Geo/SVector3.h ../Geo/Pair.h ../Geo/ExtrudeParams.h \
+  ../Common/Message.h
 meshGFaceExtruded.o: meshGFaceExtruded.cpp ../Geo/ExtrudeParams.h \
   ../Common/SmoothData.h ../Numeric/Numeric.h ../Geo/GModel.h \
   ../Geo/GVertex.h ../Geo/GEntity.h ../Geo/Range.h ../Geo/SPoint3.h \
@@ -253,19 +254,19 @@ meshGRegionDelaunayInsertion.o: meshGRegionDelaunayInsertion.cpp \
   ../Geo/GEntity.h ../Geo/MElement.h ../Geo/ExtrudeParams.h \
   ../Geo/SBoundingBox3d.h ../Common/Message.h
 meshGRegionTransfinite.o: meshGRegionTransfinite.cpp meshGFace.h \
-  ../Geo/GFace.h ../Geo/GPoint.h ../Geo/GEntity.h ../Geo/Range.h \
-  ../Geo/SPoint3.h ../Geo/SBoundingBox3d.h ../Geo/SPoint3.h \
-  ../Common/GmshDefines.h ../Geo/GEdgeLoop.h ../Geo/GEdge.h \
-  ../Geo/GEntity.h ../Geo/GVertex.h ../Geo/GEntity.h ../Geo/MVertex.h \
-  ../Geo/SPoint3.h ../Geo/GPoint.h ../Geo/SPoint2.h ../Geo/SVector3.h \
-  ../Geo/SPoint3.h ../Geo/SPoint3.h ../Geo/SPoint2.h ../Geo/MElement.h \
-  ../Geo/MVertex.h ../Geo/MEdge.h ../Geo/MVertex.h ../Geo/SVector3.h \
-  ../Common/Hash.h ../Geo/MFace.h ../Geo/MVertex.h ../Geo/SVector3.h \
-  ../Numeric/Numeric.h ../Common/Context.h ../DataStr/List.h \
-  ../Geo/ExtrudeParams.h ../Common/SmoothData.h ../Geo/MElement.h \
-  ../Geo/SPoint2.h ../Geo/SVector3.h ../Geo/Pair.h ../Geo/ExtrudeParams.h \
-  ../Geo/GRegion.h ../Geo/GEntity.h ../Geo/MElement.h \
-  ../Geo/ExtrudeParams.h ../Common/Message.h
+  ../Geo/MVertex.h ../Geo/SPoint3.h ../Geo/GFace.h ../Geo/GPoint.h \
+  ../Geo/GEntity.h ../Geo/Range.h ../Geo/SPoint3.h \
+  ../Geo/SBoundingBox3d.h ../Geo/SPoint3.h ../Common/GmshDefines.h \
+  ../Geo/GEdgeLoop.h ../Geo/GEdge.h ../Geo/GEntity.h ../Geo/GVertex.h \
+  ../Geo/GEntity.h ../Geo/MVertex.h ../Geo/GPoint.h ../Geo/SPoint2.h \
+  ../Geo/SVector3.h ../Geo/SPoint3.h ../Geo/SPoint3.h ../Geo/SPoint2.h \
+  ../Geo/MElement.h ../Geo/MVertex.h ../Geo/MEdge.h ../Geo/MVertex.h \
+  ../Geo/SVector3.h ../Common/Hash.h ../Geo/MFace.h ../Geo/MVertex.h \
+  ../Geo/SVector3.h ../Numeric/Numeric.h ../Common/Context.h \
+  ../DataStr/List.h ../Geo/ExtrudeParams.h ../Common/SmoothData.h \
+  ../Geo/MElement.h ../Geo/SPoint2.h ../Geo/SVector3.h ../Geo/Pair.h \
+  ../Geo/ExtrudeParams.h ../Geo/GRegion.h ../Geo/GEntity.h \
+  ../Geo/MElement.h ../Geo/ExtrudeParams.h ../Common/Message.h
 meshGRegionExtruded.o: meshGRegionExtruded.cpp ../Geo/ExtrudeParams.h \
   ../Common/SmoothData.h ../Numeric/Numeric.h ../Geo/GModel.h \
   ../Geo/GVertex.h ../Geo/GEntity.h ../Geo/Range.h ../Geo/SPoint3.h \
diff --git a/Mesh/meshGFace.h b/Mesh/meshGFace.h
index 7f3b16b0c838559b26644845b020ba17a51b6aa5..da58bf00ef66fca4e6b9d0ed72537bd20c17c062 100644
--- a/Mesh/meshGFace.h
+++ b/Mesh/meshGFace.h
@@ -22,8 +22,8 @@
 
 #include <vector>
 #include <set>
+#include "MVertex.h"
 
-class MVertex;
 class GFace;
 
 // Create the mesh of the face
@@ -59,4 +59,7 @@ int MeshTransfiniteSurface(GFace *gf);
 int MeshExtrudedSurface(GFace *gf, 
 			std::set<std::pair<MVertex*, MVertex*> > *constrainedEdges=0);
 
+std::set<MVertex*, MVertexLessThanLexicographic>::iterator 
+linearFind(std::set<MVertex*, MVertexLessThanLexicographic> &pos, MVertex *p);
+
 #endif
diff --git a/Mesh/meshGFaceExtruded.cpp b/Mesh/meshGFaceExtruded.cpp
index 97003f1c714a88002ed46e9c8a1e9b8966fc3556..759f50b8b7d14c4ec3163adbc4b81eeebd651c4c 100644
--- a/Mesh/meshGFaceExtruded.cpp
+++ b/Mesh/meshGFaceExtruded.cpp
@@ -1,4 +1,4 @@
-// $Id: meshGFaceExtruded.cpp,v 1.19 2007-05-24 17:34:04 geuzaine Exp $
+// $Id: meshGFaceExtruded.cpp,v 1.20 2007-07-31 20:07:38 geuzaine Exp $
 //
 // Copyright (C) 1997-2007 C. Geuzaine, J.-F. Remacle
 //
@@ -60,6 +60,26 @@ void createQuaTri(std::vector<MVertex*> &v, GFace *to,
   }
 }
 
+// FIXME: this is a temporary hack to try to circumvent problems
+// experienced with pos.find(). We need to find a better solution.
+std::set<MVertex*, MVertexLessThanLexicographic>::iterator 
+linearFind(std::set<MVertex*, MVertexLessThanLexicographic> &pos, MVertex *p)
+{
+  double eps = MVertexLessThanLexicographic::tolerance;
+  Msg(INFO, "Trying linear find for point %.16g %.16g %.16g (eps = %.16g)",
+      p->x(), p->y(), p->z(), eps);
+  for(std::set<MVertex*, MVertexLessThanLexicographic>::iterator it = pos.begin();
+      it != pos.end(); ++it){
+    MVertex *v = *it;
+    double dx = v->x() - p->x();
+    double dy = v->y() - p->y();
+    double dz = v->z() - p->z();
+    if(sqrt(dx * dx + dy * dy + dz * dz) < eps) return it;
+  }
+  return pos.end();
+}
+	   
+
 void extrudeMesh(GEdge *from, GFace *to,
 		 std::set<MVertex*, MVertexLessThanLexicographic> &pos,
 		 std::set<std::pair<MVertex*, MVertex*> > *constrainedEdges)
@@ -104,7 +124,8 @@ void extrudeMesh(GEdge *from, GFace *to,
 	for(int p = 0; p < 4; p++){
 	  MVertex tmp(x[p], y[p], z[p], 0, -1);
 	  itp = pos.find(&tmp);
-	  if(itp == pos.end()) {
+	  if(itp == pos.end()) itp = linearFind(pos, &tmp);
+	  if(itp == pos.end()){
 	    Msg(GERROR, "Could not find extruded vertex (%.16g, %.16g, %.16g) in surface %d",
 		tmp.x(), tmp.y(), tmp.z(), to->tag());
 	    return;
@@ -143,6 +164,7 @@ void copyMesh(GFace *from, GFace *to,
       ep->Extrude(ep->mesh.NbLayer - 1, ep->mesh.NbElmLayer[ep->mesh.NbLayer - 1],
 		  tmp.x(), tmp.y(), tmp.z());
       itp = pos.find(&tmp);
+      if(itp == pos.end()) itp = linearFind(pos, &tmp);
       if(itp == pos.end()) {
 	Msg(GERROR, "Could not find extruded vertex (%.16g, %.16g, %.16g) in surface %d",
 	    tmp.x(), tmp.y(), tmp.z(), to->tag());
@@ -160,6 +182,7 @@ void copyMesh(GFace *from, GFace *to,
       ep->Extrude(ep->mesh.NbLayer - 1, ep->mesh.NbElmLayer[ep->mesh.NbLayer - 1],
 		  tmp.x(), tmp.y(), tmp.z());
       itp = pos.find(&tmp);
+      if(itp == pos.end()) itp = linearFind(pos, &tmp);
       if(itp == pos.end()) {
 	Msg(GERROR, "Could not find extruded vertex (%.16g, %.16g, %.16g) in surface %d", 
 	    tmp.x(), tmp.y(), tmp.z(), to->tag());
@@ -184,6 +207,7 @@ int MeshExtrudedSurface(GFace *gf,
   // build a set with all the vertices on the boundary of gf
   double old_tol = MVertexLessThanLexicographic::tolerance; 
   MVertexLessThanLexicographic::tolerance = 1.e-12 * CTX.lc;
+
   std::set<MVertex*, MVertexLessThanLexicographic> pos;
   std::list<GEdge*> edges = gf->edges();
   std::list<GEdge*>::iterator it = edges.begin();
diff --git a/Mesh/meshGRegionExtruded.cpp b/Mesh/meshGRegionExtruded.cpp
index 5c01d7ebea07ba2c102cdcaa20065e479d3b8bef..27ee65851d49fdb3c2c1615f6f2a424afad8f0f5 100644
--- a/Mesh/meshGRegionExtruded.cpp
+++ b/Mesh/meshGRegionExtruded.cpp
@@ -1,4 +1,4 @@
-// $Id: meshGRegionExtruded.cpp,v 1.17 2007-05-10 22:08:06 geuzaine Exp $
+// $Id: meshGRegionExtruded.cpp,v 1.18 2007-07-31 20:07:38 geuzaine Exp $
 //
 // Copyright (C) 1997-2007 C. Geuzaine, J.-F. Remacle
 //
@@ -111,6 +111,7 @@ int getExtrudedVertices(MElement *ele, ExtrudeParams *ep, int j, int k,
   for(int p = 0; p < 2 * n; p++){
     MVertex tmp(x[p], y[p], z[p], 0, -1);
     itp = pos.find(&tmp);
+    if(itp == pos.end()) itp = linearFind(pos, &tmp);
     if(itp == pos.end())
       Msg(GERROR, "Could not find extruded vertex (%.16g, %.16g, %.16g)",
 	  tmp.x(), tmp.y(), tmp.z());
diff --git a/benchmarks/bugs/test_problem_point_set_search.cpp b/benchmarks/bugs/test_problem_point_set_search.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..67d8025308ccc8efbc608cc7814d0969aabffcef
--- /dev/null
+++ b/benchmarks/bugs/test_problem_point_set_search.cpp
@@ -0,0 +1,106 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <math.h>
+#include <set>
+#include <algorithm>
+
+class MVertex{
+private:
+  double _x, _y, _z;
+public:
+  MVertex(double x, double y, double z) : _x(x), _y(y), _z(z) {}
+  double x() const {return _x;}
+  double y() const {return _y;}
+  double z() const {return _z;}
+};
+
+class MVertexLessThanLexicographic{
+ public:
+  static double tolerance;
+  bool operator()(const MVertex *v1, const MVertex *v2) const
+  {
+    printf("v1 = %.16g, %.16g, %.16g +++ v2 = %.16g, %.16g, %.16g\n",
+	   v1->x(), v1->y(), v1->z(), v2->x(), v2->y(), v2->z());
+    if(v1->x() < v2->x() - tolerance) return true;
+    if(v1->x() > v2->x() + tolerance) return false;
+    if(v1->y() < v2->y() - tolerance) return true;
+    if(v1->y() > v2->y() + tolerance) return false;
+    if(v1->z() < v2->z() - tolerance) return true;
+    return false;
+  }
+};
+
+// works
+//double MVertexLessThanLexicographic::tolerance = 3.5e-13;
+
+// does not work
+double MVertexLessThanLexicographic::tolerance = 2.361143790623519e-13; 
+
+// works
+//double MVertexLessThanLexicographic::tolerance = 0.;
+
+
+int main()
+{
+  std::set<MVertex*, MVertexLessThanLexicographic> pos;
+  pos.insert(new MVertex(0.201, 0.1096015510839149, 0.1096015510839149));
+  pos.insert(new MVertex(0.201, 0.1178511301975126, 0.1178511301975126));
+  pos.insert(new MVertex(0.201, 0.1261007093115192, 0.1261007093115192));
+  pos.insert(new MVertex(0.201, 0.1343502884254441, 0.134350288425444));
+  pos.insert(new MVertex(0.201, 0.1432013275392494, 0.05931593201658891));
+  pos.insert(new MVertex(0.201, 0.1539799220848939, 0.06378057206071552));
+  pos.insert(new MVertex(0.201, 0.155, 0));
+  pos.insert(new MVertex(0.201, 0.1647585166310726, 0.06824521210506342));
+  pos.insert(new MVertex(0.201, 0.1666666666663197, 0));
+  pos.insert(new MVertex(0.201, 0.1755371111771445, 0.07270985214936707));
+  pos.insert(new MVertex(0.201, 0.1783333333332177, 0));
+  pos.insert(new MVertex(0.201, 0.19, 0));
+  pos.insert(new MVertex(0.214333333333449, 0.1096015510839149, 0.1096015510839149));
+  pos.insert(new MVertex(0.2143333333333334, 0.1178511301976489, 0.1178511301976489));
+  pos.insert(new MVertex(0.2143333333332177, 0.126100709311601, 0.1261007093116009));
+  pos.insert(new MVertex(0.2143333333331021, 0.1343502884254441, 0.134350288425444));
+  pos.insert(new MVertex(0.2143333333331021, 0.1755371111771445, 0.07270985214936707));
+  pos.insert(new MVertex(0.214333333333449, 0.1432013275392494, 0.05931593201658891));
+  pos.insert(new MVertex(0.2143333333333334, 0.153979922085072, 0.0637805720607893));
+  pos.insert(new MVertex(0.214333333333449, 0.155, 0));
+  pos.insert(new MVertex(0.2143333333332177, 0.1647585166311795, 0.06824521210510767));
+  pos.insert(new MVertex(0.2143333333333334, 0.1666666666665125, 0));
+  pos.insert(new MVertex(0.2143333333332177, 0.1783333333333333, 0));
+  pos.insert(new MVertex(0.2143333333331021, 0.19, 0));
+  pos.insert(new MVertex(0.2276666666668209, 0.1178511301977852, 0.1178511301977852));
+  pos.insert(new MVertex(0.2276666666666282, 0.1261007093116827, 0.1261007093116827));
+  pos.insert(new MVertex(0.2276666666664354, 0.1343502884254441, 0.134350288425444));
+  pos.insert(new MVertex(0.2276666666666282, 0.1647585166312863, 0.06824521210515193));
+  pos.insert(new MVertex(0.2276666666664354, 0.1755371111771445, 0.07270985214936707));
+  pos.insert(new MVertex(0.2276666666668209, 0.1539799220852501, 0.06378057206086306));
+  pos.insert(new MVertex(0.2276666666668209, 0.1666666666667052, 0));
+  pos.insert(new MVertex(0.2276666666666282, 0.178333333333449, 0));
+  pos.insert(new MVertex(0.2276666666664354, 0.19, 0));
+  pos.insert(new MVertex(0.2276666666670136, 0.1096015510839149, 0.1096015510839149));
+  pos.insert(new MVertex(0.2276666666670136, 0.1432013275392494, 0.05931593201658891));
+  pos.insert(new MVertex(0.2276666666670136, 0.155, 0));
+  pos.insert(new MVertex(0.241, 0.1096015510839149, 0.1096015510839149));
+  pos.insert(new MVertex(0.241, 0.1178511301979215, 0.1178511301979215));
+  pos.insert(new MVertex(0.241, 0.1261007093117645, 0.1261007093117645));
+  pos.insert(new MVertex(0.241, 0.1343502884254441, 0.134350288425444));
+  pos.insert(new MVertex(0.241, 0.1432013275392494, 0.05931593201658891));
+  pos.insert(new MVertex(0.241, 0.1539799220854282, 0.06378057206093682));
+  pos.insert(new MVertex(0.241, 0.155, 0));
+  pos.insert(new MVertex(0.241, 0.1647585166313932, 0.06824521210519618));
+  pos.insert(new MVertex(0.241, 0.166666666666898, 0));
+  pos.insert(new MVertex(0.241, 0.1755371111771445, 0.07270985214936707));
+  pos.insert(new MVertex(0.241, 0.1783333333335646, 0));
+  pos.insert(new MVertex(0.241, 0.19, 0));
+  
+  printf("set contains %d points\n", pos.size());
+
+  MVertex tmp(0.214333333333449, 0.1096015510839149, 0.1096015510839149);
+  std::set<MVertex*, MVertexLessThanLexicographic>::iterator itp = pos.find(&tmp);
+  if(itp == pos.end()){
+    printf("NOT FOUND!\n");
+  }
+  else{
+    printf("found: %.16g %.16g %.16g\n", (*itp)->x(), (*itp)->y(), (*itp)->z());
+  }
+
+}
diff --git a/contrib/FourierModel/Makefile b/contrib/FourierModel/Makefile
index 10b6f263f05326179e6da83d92dbf337e21be3d9..f8de9d751edb21c6de9e8eff87724f0deafbb8d5 100644
--- a/contrib/FourierModel/Makefile
+++ b/contrib/FourierModel/Makefile
@@ -49,23 +49,31 @@ depend:
 ProjectionSurface.o: ProjectionSurface.cpp ProjectionSurface.h
 CylindricalProjectionSurface.o: CylindricalProjectionSurface.cpp \
   CylindricalProjectionSurface.h ProjectionSurface.h
-RevolvedParabolaProjectionSurface.o: RevolvedParabolaProjectionSurface.cpp \
-  RevolvedParabolaProjectionSurface.h ProjectionSurface.h
+RevolvedParabolaProjectionSurface.o:  \
+ RevolvedParabolaProjectionSurface.cpp \
+  RevolvedParabolaProjectionSurface.h Utils.h ProjectionSurface.h
 ContinuationPatch.o: ContinuationPatch.cpp Message.h ContinuationPatch.h \
-  Patch.h FM_Info.h PartitionOfUnity.h
-ExactPatch.o: ExactPatch.cpp Message.h ExactPatch.h Patch.h FM_Info.h
-Patch.o: Patch.cpp Patch.h FM_Info.h
-BlendedPatch.o: BlendedPatch.cpp BlendedPatch.h BlendOperator.h Patch.h
-BlendOperator.o: BlendOperator.cpp BlendOperator.h Patch.h ProjectionSurface.h
-Curve.o: Curve.cpp Message.h Curve.h Patch.h FM_Info.h
-FM_Edge.o: FM_Edge.cpp FM_Edge.h Curve.h Patch.h FM_Info.h FM_Vertex.h \
-  Message.h
-FM_Face.o: FM_Face.cpp FM_Face.h Patch.h FM_Info.h FM_Edge.h Curve.h \
-  FM_Vertex.h Message.h
+  Patch.h FM_Info.h ProjectionSurface.h PartitionOfUnity.h \
+  Interpolator1D.h
+ExactPatch.o: ExactPatch.cpp Message.h ExactPatch.h Patch.h FM_Info.h \
+  ProjectionSurface.h
+Patch.o: Patch.cpp Patch.h FM_Info.h ProjectionSurface.h
+BlendedPatch.o: BlendedPatch.cpp BlendedPatch.h Message.h Patch.h \
+  FM_Info.h ProjectionSurface.h BlendOperator.h PartitionOfUnity.h
+BlendOperator.o: BlendOperator.cpp BlendOperator.h FM_Info.h Patch.h \
+  ProjectionSurface.h
+Curve.o: Curve.cpp Message.h Curve.h Patch.h FM_Info.h \
+  ProjectionSurface.h
+FM_Edge.o: FM_Edge.cpp FM_Edge.h Curve.h Patch.h FM_Info.h \
+  ProjectionSurface.h FM_Vertex.h Message.h
+FM_Face.o: FM_Face.cpp FM_Face.h Patch.h FM_Info.h ProjectionSurface.h \
+  FM_Edge.h Curve.h FM_Vertex.h Message.h
 FM_Info.o: FM_Info.cpp FM_Info.h
 FM_Reader.o: FM_Reader.cpp Message.h FM_Reader.h Curve.h Patch.h \
-  FM_Info.h ExactPatch.h ContinuationPatch.h FM_Face.h FM_Edge.h \
-  FM_Vertex.h
+  FM_Info.h ProjectionSurface.h ExactPatch.h ContinuationPatch.h \
+  PartitionOfUnity.h Interpolator1D.h CylindricalProjectionSurface.h \
+  RevolvedParabolaProjectionSurface.h Utils.h FM_Face.h FM_Edge.h \
+  FM_Vertex.h BlendOperator.h BlendedPatch.h
 FM_Vertex.o: FM_Vertex.cpp
 Message.o: Message.cpp Message.h
 Utils.o: Utils.cpp Utils.h
diff --git a/doc/VERSIONS b/doc/VERSIONS
index 3c5b47128c0ad287a7fcaa3b61a8ba38f0ca66a6..694749957d54372a7e9774812fed300c74d7f7df 100644
--- a/doc/VERSIONS
+++ b/doc/VERSIONS
@@ -1,4 +1,6 @@
-$Id: VERSIONS,v 1.388 2007-07-13 14:12:07 geuzaine Exp $
+$Id: VERSIONS,v 1.389 2007-07-31 20:07:39 geuzaine Exp $
+
+2.0.9 (XX): temp fix for 'could not find extruded vertex' bug;
 
 2.0.8 (Jul 13, 2007): unused vertices are not saved in mesh files
 anymore; new plugin GUI; automatic GUI font size selection; renamed