diff --git a/Mesh/3D_Coherence.cpp b/Mesh/3D_Coherence.cpp
index 8f9bd47e6aa83a781ef4d92db6278d4b398f98fe..f36446f9fb4c3bff52848e2692e1dd1c75f66523 100644
--- a/Mesh/3D_Coherence.cpp
+++ b/Mesh/3D_Coherence.cpp
@@ -1,4 +1,4 @@
-/* $Id: 3D_Coherence.cpp,v 1.7 2000-11-26 15:43:46 geuzaine Exp $ */
+/* $Id: 3D_Coherence.cpp,v 1.8 2000-11-30 14:57:52 geuzaine Exp $ */
 
 #include "Gmsh.h"
 #include "Const.h"
@@ -1338,13 +1338,14 @@ int Coherence (Volume * v, Mesh * m){
 
   Impression_Resultats ();
 
+  if (List_Nbr (MissingFaces) || List_Nbr (MissingEdges)){
+    return 0;
+  }
+
   Link_Simplexes (NULL, v->Simplexes);
   Msg(STATUS, "Volume Recovery");
   Restore_Volume (v);
 
-  if (List_Nbr (MissingFaces) || List_Nbr (MissingEdges)){
-    return 0;
-  }
   return 1;
 }
 
diff --git a/Mesh/Interpolation.cpp b/Mesh/Interpolation.cpp
index caf44d000656b6b02491a24fc6865b6b8e51132b..9dbf72415cfd78094d0874dc574f83249c29ccb1 100644
--- a/Mesh/Interpolation.cpp
+++ b/Mesh/Interpolation.cpp
@@ -1,4 +1,4 @@
-/* $Id: Interpolation.cpp,v 1.5 2000-11-26 18:43:48 geuzaine Exp $ */
+/* $Id: Interpolation.cpp,v 1.6 2000-11-30 14:57:52 geuzaine Exp $ */
 
 #include "Gmsh.h"
 #include "Const.h"
@@ -84,15 +84,15 @@ Vertex InterpolateCurve (Curve * Curve, double u, int derivee){
       Curve->Circle.f2 * sin (teta) * sin (Curve->Circle.incl);
     V.Pos.Y = Curve->Circle.f1 * cos (teta) * sin (Curve->Circle.incl) +
       Curve->Circle.f2 * sin (teta) * cos (Curve->Circle.incl);
-
     V.Pos.Z = 0.0;
-    V.lc = (u * Curve->beg->lc + (1. - u) * Curve->end->lc);
     Projette (&V, Curve->Circle.invmat);
     V.Pos.X += Curve->Circle.v[2]->Pos.X;
     V.Pos.Y += Curve->Circle.v[2]->Pos.Y;
     V.Pos.Z += Curve->Circle.v[2]->Pos.Z;
     V.w = (u * Curve->beg->w + (1. - u) * Curve->end->w);
-    V.lc = (u * Curve->beg->lc + (1. - u) * Curve->end->lc);
+
+    // ?????
+    V.lc = (u * Curve->end->lc + (1. - u) * Curve->beg->lc);
     return V;
     
   case MSH_SEGM_BSPLN: