Index: /issm/trunk-jpl/src/c/classes/Elements/Tria.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/Elements/Tria.cpp	(revision 17857)
+++ /issm/trunk-jpl/src/c/classes/Elements/Tria.cpp	(revision 17858)
@@ -157,4 +157,5 @@
 	else{
 		IssmDouble* xyz_list=NULL;
+		IssmDouble *xyz_list_base=NULL;
 		IssmDouble  pressure,viscosity,sigma_nn;
 		IssmDouble  sigma_xx,sigma_xy,sigma_yy;
@@ -165,4 +166,5 @@
 		/* Get node coordinates and dof list: */
 		GetVerticesCoordinates(&xyz_list);
+	   GetVerticesCoordinatesTop(&xyz_list_base);
 
 		/*Retrieve all inputs we will be needing: */
@@ -188,5 +190,5 @@
 
 		/*Get normal vector to the bed */
-		NormalBase(&base_normal[0],xyz_list);
+		NormalBase(&base_normal[0],xyz_list_base);
 
 		/*Compute sigma_nn*/
@@ -198,4 +200,5 @@
 		/*Clean up and return*/
 		xDelete<IssmDouble>(xyz_list);
+		xDelete<IssmDouble>(xyz_list_base);
 		delete gauss;
 	}
@@ -1665,11 +1668,9 @@
 
 	/*Build unit outward pointing vector*/
-	int index1,index2;
 	IssmDouble vector[2];
 	IssmDouble norm;
 
-	this->EdgeOnBaseIndices(&index1,&index2);
-	vector[0]=xyz_list[index2*3+0] - xyz_list[index1*3+0];
-	vector[1]=xyz_list[index2*3+1] - xyz_list[index1*3+1];
+	vector[0]=xyz_list[1*3+0] - xyz_list[0*3+0];
+	vector[1]=xyz_list[1*3+1] - xyz_list[0*3+1];
 
 	norm=sqrt(vector[0]*vector[0] + vector[1]*vector[1]);
@@ -1688,6 +1689,6 @@
 
 	this->EdgeOnSurfaceIndices(&index1,&index2);
-	vector[0]=xyz_list[index2*3+0] - xyz_list[index1*3+0];
-	vector[1]=xyz_list[index2*3+1] - xyz_list[index1*3+1];
+	vector[0]=xyz_list[1*3+0] - xyz_list[0*3+0];
+	vector[1]=xyz_list[1*3+1] - xyz_list[0*3+1];
 
 	norm=sqrt(vector[0]*vector[0] + vector[1]*vector[1]);
