Index: /issm/trunk-jpl/src/c/bamg/BamgVertex.h
===================================================================
--- /issm/trunk-jpl/src/c/bamg/BamgVertex.h	(revision 19292)
+++ /issm/trunk-jpl/src/c/bamg/BamgVertex.h	(revision 19293)
@@ -48,4 +48,5 @@
 			void   Echo();
 			int    GetReferenceNumber() const;
+			I2     GetIntegerCoordinates() const{return this->i;};// avoid operator I2()
 			long   Optim(int =1,int =0); 
 
Index: /issm/trunk-jpl/src/c/bamg/Mesh.cpp
===================================================================
--- /issm/trunk-jpl/src/c/bamg/Mesh.cpp	(revision 19292)
+++ /issm/trunk-jpl/src/c/bamg/Mesh.cpp	(revision 19293)
@@ -1099,5 +1099,5 @@
 	}
 	/*}}}*/
-	void Mesh::AddVertex( BamgVertex &s,Triangle* t, Icoor2* det3) {/*{{{*/
+	void Mesh::AddVertex( BamgVertex &s,Triangle* t, Icoor2* det3){/*{{{*/
 		/*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, Mesh2.cpp/Add)*/
 		// -------------------------------
@@ -1124,7 +1124,7 @@
 
 		/*three vertices of t*/
-		BamgVertex &s0=(*t)[0];
-		BamgVertex &s1=(*t)[1];
-		BamgVertex &s2=(*t)[2];
+		BamgVertex* s0=t->GetVertex(0);
+		BamgVertex* s1=t->GetVertex(1);
+		BamgVertex* s2=t->GetVertex(2);
 
 		//determinant of t
@@ -1134,5 +1134,5 @@
 			if no infinite vertex (NULL) infvertexindex=-1
 			else if v_i is infinite, infvertexindex=i*/
-		int infvertexindex = &s0 ?  ((  &s1 ? ( &s2  ? -1 : 2) : 1  )) : 0;
+		int infvertexindex = s0 ? ((s1? (s2?-1:2):1)):0;
 
 		//some checks
@@ -1147,12 +1147,12 @@
 			//if no infinite vertex
 			if (infvertexindex<0 ) {
-				det3[0]=bamg::det(s ,s1,s2);
-				det3[1]=bamg::det(s0,s ,s2);
-				det3[2]=bamg::det(s0,s1,s );}
+				det3[0]=bamg::det(s .GetIntegerCoordinates(),s1->GetIntegerCoordinates(),s2->GetIntegerCoordinates());
+				det3[1]=bamg::det(s0->GetIntegerCoordinates(),s .GetIntegerCoordinates(),s2->GetIntegerCoordinates());
+				det3[2]=bamg::det(s0->GetIntegerCoordinates(),s1->GetIntegerCoordinates(),s.GetIntegerCoordinates());}
 			else { 
 				// one of &s1  &s2  &s0 is NULL
-				det3[0]= &s0 ? -1 : bamg::det(s ,s1,s2) ;
-				det3[1]= &s1 ? -1 : bamg::det(s0,s ,s2) ;
-				det3[2]= &s2 ? -1 : bamg::det(s0,s1,s ) ;
+				det3[0]= s0 ? -1 : bamg::det(s.GetIntegerCoordinates(),s1->GetIntegerCoordinates(),s2->GetIntegerCoordinates()) ;
+				det3[1]= s1 ? -1 : bamg::det(s0->GetIntegerCoordinates(),s.GetIntegerCoordinates(),s2->GetIntegerCoordinates()) ;
+				det3[2]= s2 ? -1 : bamg::det(s0->GetIntegerCoordinates(),s1->GetIntegerCoordinates(),s.GetIntegerCoordinates()) ;
 			}
 		}
@@ -3800,13 +3800,13 @@
 		int number_of_errors=0;
 		for (i=0;i<nbt;i++) {
-			BamgVertex & v0 = triangles[i][0];
-			BamgVertex & v1 = triangles[i][1];
-			BamgVertex & v2 = triangles[i][2];
+			BamgVertex* v0 = triangles[i](0);
+			BamgVertex* v1 = triangles[i](1);
+			BamgVertex* v2 = triangles[i](2);
 
 			//If this is not a boundary triangle
-			if ( &v0 && &v1 &&  &v2 ){
+			if (v0 && v1 && v2){
 
 				/*Compute determinant*/
-				triangles[i].det= det(v0,v1,v2);
+				triangles[i].det= det(v0->GetIntegerCoordinates(),v1->GetIntegerCoordinates(),v2->GetIntegerCoordinates());
 
 				/*Check that determinant is positive*/
Index: /issm/trunk-jpl/src/c/bamg/Triangle.h
===================================================================
--- /issm/trunk-jpl/src/c/bamg/Triangle.h	(revision 19292)
+++ /issm/trunk-jpl/src/c/bamg/Triangle.h	(revision 19293)
@@ -65,4 +65,5 @@
 			void  Set(const Triangle &,const Mesh &,Mesh &);
 			int   In(BamgVertex *v) const { return vertices[0]==v || vertices[1]==v || vertices[2]==v ;}
+			BamgVertex* GetVertex(int i){return vertices[i];}; // FIXME: this is used to avoid BamgVertex * operator()
 
 	};
