diff --git a/Mesh/Matrix.h b/Mesh/Matrix.h
index e721bf8c94eaf1a6318df437f380bcc69878c2c6..81ef1227aac8e05f7aa3137e56f9ce36e8b7a3a6 100644
--- a/Mesh/Matrix.h
+++ b/Mesh/Matrix.h
@@ -39,7 +39,7 @@ class Matrix{
   double get_m31(){ return m31; }
   double get_m12(){ return m12; }
   double get_m22(){ return m22; }
-  double get_m32(){ return m23; }
+  double get_m32(){ return m32; }
   double get_m13(){ return m13; }
   double get_m23(){ return m23; }
   double get_m33(){ return m33; }
diff --git a/Mesh/cross3D.h b/Mesh/cross3D.h
index 8c4a3553aee87a1f581fc557df367f5e635dfdea..990805c32e1ffc7fa08f0dbc6b16d3b1213ffbf8 100644
--- a/Mesh/cross3D.h
+++ b/Mesh/cross3D.h
@@ -13,6 +13,8 @@
 #include "stat_quatern.h"
 using namespace CwMtx;
 
+#include "Matrix.h"
+
 //double max(const double a, const double b) { return (b>a)?b:a;}
 double min(const double a, const double b) { return (b<a)?b:a; }
 double squ(const double a) { return a*a; }
diff --git a/Mesh/directions3D.cpp b/Mesh/directions3D.cpp
index 2b869e864deeaa8dde436ca2272facd4cda71617..3bfa04943ec4bb4a2d57e8f967f5997e86fe235d 100644
--- a/Mesh/directions3D.cpp
+++ b/Mesh/directions3D.cpp
@@ -549,30 +549,31 @@ void Frame_field::save(GRegion* gr, const std::string& filename){
       m = itA->second;
 
     p = SPoint3(pVertex->x(),pVertex->y(),pVertex->z());
+    double val1=0, val2=0;
     p1 = SPoint3(pVertex->x() + k*m.get_m11(),
 		 pVertex->y() + k*m.get_m21(),
 		 pVertex->z() + k*m.get_m31());
-    print_segment(p,p1,pVertex->z(),pVertex->z(),file);
+    print_segment(p,p1,val1,val2,file);
     p1 = SPoint3(pVertex->x() - k*m.get_m11(),
 		 pVertex->y() - k*m.get_m21(),
 		 pVertex->z() - k*m.get_m31());
-    print_segment(p,p1,pVertex->z(),pVertex->z(),file);
+    print_segment(p,p1,val1,val2,file);
     p1 = SPoint3(pVertex->x() + k*m.get_m12(),
 		 pVertex->y() + k*m.get_m22(),
 		 pVertex->z() + k*m.get_m32());
-    print_segment(p,p1,pVertex->z(),pVertex->z(),file);
+    print_segment(p,p1,val1,val2,file);
     p1 = SPoint3(pVertex->x() - k*m.get_m12(),
 		 pVertex->y() - k*m.get_m22(),
 		 pVertex->z() - k*m.get_m32());
-    print_segment(p,p1,pVertex->z(),pVertex->z(),file);
+    print_segment(p,p1,val1,val2,file);
     p1 = SPoint3(pVertex->x() + k*m.get_m13(),
 		 pVertex->y() + k*m.get_m23(),
 		 pVertex->z() + k*m.get_m33());
-    print_segment(p,p1,pVertex->z(),pVertex->z(),file);
+    print_segment(p,p1,val1,val2,file);
     p1 = SPoint3(pVertex->x() - k*m.get_m13(),
 		 pVertex->y() - k*m.get_m23(),
 		 pVertex->z() - k*m.get_m33());
-    print_segment(p,p1,pVertex->z(),pVertex->z(),file);
+    print_segment(p,p1,val1,val2,file);
   }
   file << "};\n";
   file.close();
@@ -584,6 +585,7 @@ void Frame_field::fillTreeVolume(GRegion* gr){
   std::cout << "Filling ANN tree with " << n << " vertices" << std::endl;
   annTreeData = annAllocPts(n,3);
   int index=0;
+  vertIndices.clear();
   for(std::map<MVertex*, std::set<MVertex*> >::iterator iter = crossData.vertex_to_vertices.begin(); 
       iter != crossData.vertex_to_vertices.end(); ++iter){
     MVertex* pVertex = iter->first;
@@ -591,6 +593,7 @@ void Frame_field::fillTreeVolume(GRegion* gr){
     annTreeData[index][1] = pVertex->y();
     annTreeData[index][2] = pVertex->z();
     vertIndices.push_back(pVertex->getNum());
+    index++;
   }
   annTree = new ANNkd_tree(annTreeData,n,3);
 #endif
diff --git a/Mesh/simple3D.cpp b/Mesh/simple3D.cpp
index c17f71e570c87eed1fb160d7777916d6c34a24c0..14ae82855fba30c6e63f286be2fd14fe52dffc3f 100644
--- a/Mesh/simple3D.cpp
+++ b/Mesh/simple3D.cpp
@@ -349,7 +349,7 @@ void Filler::treat_region(GRegion* gr){
   Frame_field::init_region(gr);
 
   int NumSmooth = CTX::instance()->mesh.nbSmoothing;
-  int NumIter = 0;
+  int NumIter = 1;
   double eold;
   Frame_field::init(gr);
   double enew = Frame_field::smooth(gr);
@@ -384,6 +384,8 @@ void Filler::treat_region(GRegion* gr){
 	  boundary_vertices.push_back(*it);
 	}
   }
+  std::ofstream file("nodes.pos");
+  file << "View \"test\" {\n";	
 
   for(i=0;i<boundary_vertices.size();i++){
     x = boundary_vertices[i]->x();
@@ -394,11 +396,9 @@ void Filler::treat_region(GRegion* gr){
 	compute_parameters(node,gr);
 	rtree.Insert(node->min,node->max,node);
 	fifo.push(node);
+	print_node(node,file);
   }
   
-  //std::ofstream file("nodes.pos");
-  //file << "View \"test\" {\n";	
-  
   count = 1;
   while(!fifo.empty()){
     parent = fifo.front();
@@ -448,7 +448,7 @@ void Filler::treat_region(GRegion* gr){
 	count++;
   }
   
-  //file << "};\n";
+  file << "};\n";
 
   int option = CTX::instance()->mesh.algo3d;
   CTX::instance()->mesh.algo3d = ALGO_3D_DELAUNAY;