Index: /issm/trunk-jpl/src/c/modules/KillIcebergsx/KillIcebergsx.cpp
===================================================================
--- /issm/trunk-jpl/src/c/modules/KillIcebergsx/KillIcebergsx.cpp	(revision 23994)
+++ /issm/trunk-jpl/src/c/modules/KillIcebergsx/KillIcebergsx.cpp	(revision 23995)
@@ -21,4 +21,7 @@
 	Vector<IssmDouble>* vec_connected_to_land=new Vector<IssmDouble>(nbv_local,nbv_global);
 
+	/*Prepare element flag to speed up process*/
+	bool* element_flag = xNewZeroInit<bool>(femmodel->elements->Size());
+
 	/*Fill vector with 1 where it is grounded*/
 	IssmDouble eflags[MAXVERTICES];
@@ -28,5 +31,9 @@
 		Element* element=xDynamicCast<Element*>(femmodel->elements->GetObjectByOffset(i));
 
-		if(element->IsIceInElement()){
+		if(!element->IsIceInElement()){
+			/*Nothing to do, just flag element to speed up the computation*/
+			element_flag[i] = true;
+		}
+		else{
 			if(element->IsGrounded()){
 				int  numvertices = element->GetNumberOfVertices();
@@ -38,7 +45,4 @@
 	}
 	vec_connected_to_land->Assemble();
-
-	/*Prepare element flag to speed up process*/
-	bool* element_flag = xNewZeroInit<bool>(femmodel->elements->Size());
 
 	bool keepsyncing = true;
@@ -60,5 +64,5 @@
 				Element* element=xDynamicCast<Element*>(femmodel->elements->GetObjectByOffset(i));
 
-				if(element->IsIceInElement() || element_flag[i]){
+				if(!element_flag[i]){
 					int numvertices = element->GetNumberOfVertices();
 					element->GetVerticesLidList(&lidlist[0]);
@@ -88,5 +92,4 @@
 		ISSM_MPI_Reduce(&iter,&iter_max,1,ISSM_MPI_INT,ISSM_MPI_MAX,0,IssmComm::GetComm());
 		if(iter_max==2){
-			xDelete<bool>(element_flag);
 			keepsyncing = false;
 		}
@@ -103,9 +106,10 @@
 					}
 			}
-			xDelete<bool>(element_flag);
 			vec_connected_to_land->Assemble();
 		}
 	}
 
+	/*Cleanup*/
+	xDelete<bool>(element_flag);
 	delete vec_connected_to_land;
 
