Index: /issm/trunk/src/c/Bamgx/objects/Triangles.cpp
===================================================================
--- /issm/trunk/src/c/Bamgx/objects/Triangles.cpp	(revision 3340)
+++ /issm/trunk/src/c/Bamgx/objects/Triangles.cpp	(revision 3341)
@@ -628,6 +628,22 @@
 		bamgmesh->ElementEdges=(double*)xmalloc(4*edge4->nb()*sizeof(double));
 		for (i=0;i<edge4->nb();i++){
-			bamgmesh->ElementEdges[i*4+0]=edge4->i(i)+1;// back to M indexing
-			bamgmesh->ElementEdges[i*4+1]=edge4->j(i)+1;// back to M indexing
+			/*Invert first two vertices if necessary*/
+			bool found=false;
+			for (j=0;j<3;j++){
+				if (triangles[(int)elemedge[2*i+0]](j)==vertices+edge4->i(i)){
+					if (triangles[(int)elemedge[2*i+0]]((j+1)%3)==vertices+edge4->j(i)){
+						//trigonometric direction
+						bamgmesh->ElementEdges[i*4+0]=edge4->i(i)+1;// back to M indexing
+						bamgmesh->ElementEdges[i*4+1]=edge4->j(i)+1;// back to M indexing
+					}
+					else{
+						bamgmesh->ElementEdges[i*4+0]=edge4->j(i)+1;// back to M indexing
+						bamgmesh->ElementEdges[i*4+1]=edge4->i(i)+1;// back to M indexing
+					}
+					found=true;
+					break;
+				}
+			}
+			ISSMASSERT(found);
 			bamgmesh->ElementEdges[i*4+2]=elemedge[2*i+0]+1; // back to M indexing
 			bamgmesh->ElementEdges[i*4+3]=elemedge[2*i+1]+1; // back to M indexing
