Index: /issm/trunk-jpl/src/c/classes/FemModel.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/FemModel.cpp	(revision 27458)
+++ /issm/trunk-jpl/src/c/classes/FemModel.cpp	(revision 27459)
@@ -1480,6 +1480,6 @@
    xDelete<IssmDouble>(recv_buffer);
    for(int rank=0;rank<num_procs;rank++){
-      if(rank!=my_rank) ISSM_MPI_Wait(&send_requests[rank],&status);
-      xDelete<IssmDouble>(send_buffers[rank]);
+		if(this->vertices->common_send[rank]) ISSM_MPI_Wait(&send_requests[rank],&status);
+		xDelete<IssmDouble>(send_buffers[rank]);
    }
    xDelete<IssmDouble*>(send_buffers);
@@ -1528,5 +1528,5 @@
 	/*Wait until MPI is done*/
 	for(int rank=0;rank<num_procs;rank++){
-		if(rank!=my_rank) ISSM_MPI_Wait(&send_requests[rank],&status);
+		if(this->vertices->common_send[rank]) ISSM_MPI_Wait(&send_requests[rank],&status);
 	}
 
@@ -1561,5 +1561,5 @@
 	xDelete<IssmDouble>(recv_buffer);
 	for(int rank=0;rank<num_procs;rank++){
-		if(rank!=my_rank) ISSM_MPI_Wait(&send_requests[rank],&status);
+		if(this->vertices->common_send[rank]) ISSM_MPI_Wait(&send_requests[rank],&status);
 		xDelete<IssmDouble>(send_buffers[rank]);
 	}
@@ -1624,5 +1624,5 @@
 	xDelete<IssmDouble>(recv_buffer);
 	for(int rank=0;rank<num_procs;rank++){
-		if(rank!=my_rank) ISSM_MPI_Wait(&send_requests[rank],&status);
+		if(this->nodes->common_send[rank]) ISSM_MPI_Wait(&send_requests[rank],&status);
 		xDelete<IssmDouble>(send_buffers[rank]);
 	}
@@ -1670,5 +1670,5 @@
 		basin_icefront_area[basin]=total_icefront_area;
 	}
-	
+
 	this->parameters->AddObject(new DoubleVecParam(FrontalForcingsBasinIcefrontAreaEnum,basin_icefront_area,numbasins));
 
Index: /issm/trunk-jpl/src/c/classes/Nodes.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/Nodes.cpp	(revision 27458)
+++ /issm/trunk-jpl/src/c/classes/Nodes.cpp	(revision 27459)
@@ -210,5 +210,5 @@
 	xDelete<int>(recv_truedofs);
 	for(int rank=0;rank<num_procs;rank++){
-		if(rank!=my_rank) ISSM_MPI_Wait(&send_requests[rank],&status);
+		if(this->common_send[rank]) ISSM_MPI_Wait(&send_requests[rank],&status);
 		xDelete<int>(send_truedofs[rank]);
 	}
@@ -299,5 +299,5 @@
 	xDelete<int>(recv_truepids);
 	for(int rank=0;rank<num_procs;rank++){
-		if(rank!=my_rank) ISSM_MPI_Wait(&send_requests[rank],&status);
+		if(this->common_send[rank]) ISSM_MPI_Wait(&send_requests[rank],&status);
 		xDelete<int>(send_truepids[rank]);
 	}
@@ -505,5 +505,5 @@
 	/*Now send and receive ug for nodes on partition edge*/
 	IssmDouble **send_buffers = xNewZeroInit<IssmDouble*>(num_procs);
-	IssmDouble  *recv_buffer  = xNewZeroInit<IssmDouble>(this->Size()*maxdofspernode,"t"); 
+	IssmDouble  *recv_buffer  = xNewZeroInit<IssmDouble>(this->Size()*maxdofspernode,"t");
 	ISSM_MPI_Request  *send_requests = xNew<ISSM_MPI_Request>(num_procs);
 	for (int rank = 0;rank<num_procs;rank++) send_requests[rank] = ISSM_MPI_REQUEST_NULL;
@@ -536,5 +536,5 @@
 	xDelete<IssmDouble>(recv_buffer);
 	for(int rank=0;rank<num_procs;rank++){
-		if(rank!=my_rank) ISSM_MPI_Wait(&send_requests[rank],&status);
+		if(this->common_send[rank]) ISSM_MPI_Wait(&send_requests[rank],&status);
 		xDelete<IssmDouble>(send_buffers[rank]);
 	}
Index: /issm/trunk-jpl/src/c/classes/Vertices.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/Vertices.cpp	(revision 27458)
+++ /issm/trunk-jpl/src/c/classes/Vertices.cpp	(revision 27459)
@@ -262,5 +262,5 @@
 	xDelete<int>(recv_truepids);
 	for(int rank=0;rank<num_procs;rank++){
-		if(rank!=my_rank) ISSM_MPI_Wait(&send_requests[rank],&status);
+		if(this->common_send[rank]) ISSM_MPI_Wait(&send_requests[rank],&status);
 		xDelete<int>(send_truepids[rank]);
 	}
