Index: /issm/trunk-jpl/src/m/boundaryconditions/SetIceShelfBC.py
===================================================================
--- /issm/trunk-jpl/src/m/boundaryconditions/SetIceShelfBC.py	(revision 15814)
+++ /issm/trunk-jpl/src/m/boundaryconditions/SetIceShelfBC.py	(revision 15815)
@@ -50,12 +50,32 @@
 		values=md.mask.icelevelset[md.mesh.segments[:,0:-1]-1]
 		segmentsfront=1-values
-		segments=(numpy.sum(segmentsfront,axis=1)!=numbernodesfront).astype(int)
+		numpy.sum(segmentsfront,axis=1)!=numbernodesfront
+		segments=numpy.nonzero(numpy.sum(segmentsfront,axis=1)!=numbernodesfront)[0]
 		#Find all nodes for these segments and spc them
 		pos=md.mesh.segments[segments,0:-1]
 	else:
 		pos=numpy.nonzero(md.mesh.vertexonboundary)[0]
-	md.stressbalance.spcvx[pos[:]]=0
-	md.stressbalance.spcvy[pos[:]]=0
-	md.stressbalance.spcvz[pos[:]]=0
+	md.stressbalance.spcvx[pos[:]-1]=0
+	md.stressbalance.spcvy[pos[:]-1]=0
+	md.stressbalance.spcvz[pos[:]-1]=0
+																													   
+	if md.mesh.dimension==2:
+		numbernodesfront=2
+	else:
+		numbernodesfront=4
+	if any(md.mask.icelevelset<=0):
+		values=md.mask.icelevelset[md.mesh.segments[:,0:-1]-1]
+		segmentsfront=1-values
+		numpy.sum(segmentsfront,axis=1)!=numbernodesfront
+		segments=numpy.nonzero(numpy.sum(segmentsfront,axis=1)!=numbernodesfront)[0]
+		print segments
+		#Find all nodes for these segments and spc them
+		pos=md.mesh.segments[segments,0:-1]
+		print pos
+	else:
+		pos=numpy.nonzero(md.mesh.vertexonboundary)[0]
+	md.stressbalance.spcvx[pos[:]-1]=0
+	md.stressbalance.spcvy[pos[:]-1]=0
+	md.stressbalance.spcvz[pos[:]-1]=0
 
 	#Dirichlet Values
Index: /issm/trunk-jpl/src/m/boundaryconditions/SetMarineIceSheetBC.py
===================================================================
--- /issm/trunk-jpl/src/m/boundaryconditions/SetMarineIceSheetBC.py	(revision 15814)
+++ /issm/trunk-jpl/src/m/boundaryconditions/SetMarineIceSheetBC.py	(revision 15815)
@@ -58,12 +58,13 @@
 		values=md.mask.icelevelset[md.mesh.segments[:,0:-1]-1]
 		segmentsfront=1-values
-		segments=(numpy.sum(segmentsfront,axis=1)!=numbernodesfront).astype(int)
+		numpy.sum(segmentsfront,axis=1)!=numbernodesfront
+		segments=numpy.nonzero(numpy.sum(segmentsfront,axis=1)!=numbernodesfront)[0]
 		#Find all nodes for these segments and spc them
 		pos=md.mesh.segments[segments,0:-1]
 	else:
 		pos=numpy.nonzero(md.mesh.vertexonboundary)[0]
-	md.stressbalance.spcvx[pos[:]]=0
-	md.stressbalance.spcvy[pos[:]]=0
-	md.stressbalance.spcvz[pos[:]]=0
+	md.stressbalance.spcvx[pos[:]-1]=0
+	md.stressbalance.spcvy[pos[:]-1]=0
+	md.stressbalance.spcvz[pos[:]-1]=0
 
 	#Dirichlet Values
