Index: /issm/trunk-jpl/src/c/modules/IoModelToConstraintsx/IoModelToConstraintsx.cpp
===================================================================
--- /issm/trunk-jpl/src/c/modules/IoModelToConstraintsx/IoModelToConstraintsx.cpp	(revision 17560)
+++ /issm/trunk-jpl/src/c/modules/IoModelToConstraintsx/IoModelToConstraintsx.cpp	(revision 17561)
@@ -125,10 +125,10 @@
 								isnan=0;
 								for(j=0;j<numfacevertices;j++){
-									if(xIsNan<IssmDouble>(spcdata[faceverticesid[j]])) isnan=1;
+									if(xIsNan<IssmDouble>(spcdata[faceverticesid[j]-1])) isnan=1;
 								}
 								if(isnan==0){
 									value=0;
 									for(j=0;j<numfacevertices;j++){
-										value=value+spcdata[faceverticesid[j]]/numfacevertices;
+										value=value+spcdata[faceverticesid[j]-1]/numfacevertices;
 									}
 									constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+iomodel->numberofvertices+iomodel->numberofedges+i+1,
@@ -136,4 +136,5 @@
 									count++;
 								}
+								xDelete<int>(faceverticesid);
 							}
 						}
@@ -184,10 +185,10 @@
 							isnan=0;
 							for(j=0;j<numfacevertices;j++){
-								if(xIsNan<IssmDouble>(spcdata[faceverticesid[j]])) isnan=1;
+								if(xIsNan<IssmDouble>(spcdata[faceverticesid[j]-1])) isnan=1;
 							}
 							if(isnan==0){
 								value=0;
 								for(j=0;j<numfacevertices;j++){
-									value=value+spcdata[faceverticesid[j]]/numfacevertices;
+									value=value+spcdata[faceverticesid[j]-1]/numfacevertices;
 								}
 								constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+iomodel->numberofvertices+3*iomodel->numberofedges+3*i+1,
@@ -199,4 +200,5 @@
 								count=count+3;
 							}
+							xDelete<int>(faceverticesid);
 						}
 					}
@@ -466,5 +468,4 @@
 
 	/*Free ressources:*/
-	xDelete<int>(faceverticesid);
 	xDelete<IssmDouble>(times);
 	xDelete<IssmDouble>(values);
Index: /issm/trunk-jpl/src/c/modules/ModelProcessorx/CreateFaces.cpp
===================================================================
--- /issm/trunk-jpl/src/c/modules/ModelProcessorx/CreateFaces.cpp	(revision 17560)
+++ /issm/trunk-jpl/src/c/modules/ModelProcessorx/CreateFaces.cpp	(revision 17561)
@@ -244,8 +244,8 @@
 	int numbervertices;
 	if(iomodel->meshtype==Mesh3DEnum){
-		if((iomodel->faces[6*facenumber+5]-1)==1){
+		if((iomodel->faces[6*facenumber+5])==1){
 			numbervertices=3;
 		}
-		else if((iomodel->faces[6*facenumber+5]-1)==2){
+		else if((iomodel->faces[6*facenumber+5])==2){
 			numbervertices=4;
 		}
@@ -259,9 +259,9 @@
 	}
 	else if(numbervertices==4){
-		int  i,j,cols,faceid;
+		int  i,j,k,cols,faceid;
 		int  maxnbf,nbf,elementnbf,elementnbv,facemaxnbv;
 		int *elementfaces         = NULL;
 		int *elementfaces_markers = NULL;
-		int elementid=iomodel->faces[6*facenumber+4]-1;
+		int elementid=iomodel->faces[6*facenumber+3];
 		int counter=0;
 
@@ -289,5 +289,7 @@
 			counter=0;
 			for(j=0;j<3;j++){
-				if(iomodel->elements[elementid*6+elementfaces[cols*faceid+j]] == iomodel->faces[6*facenumber+j]) counter++;
+				for(k=1;k<5;k++){
+					if(iomodel->elements[(elementid-1)*6+elementfaces[cols*faceid+k]] == iomodel->faces[6*facenumber+j]) counter++;
+				}
 			}
 			if(counter==3) break;
@@ -295,5 +297,7 @@
 		if(counter!=3) _error_("face not found in element");
 
-		for(j=0;j<3;j++) facevertices[i]=iomodel->elements[elementid*6+elementfaces[cols*faceid+j]];
+		for(j=0;j<4;j++){
+			facevertices[j]=iomodel->elements[(elementid-1)*6+elementfaces[cols*faceid+j+1]];
+		}
 
 		/*Delete*/
