Index: /issm/trunk-jpl/src/c/classes/Inputs/ControlInput.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/Inputs/ControlInput.cpp	(revision 27702)
+++ /issm/trunk-jpl/src/c/classes/Inputs/ControlInput.cpp	(revision 27703)
@@ -227,4 +227,8 @@
 }
 /*}}}*/
+void ControlInput::AverageAndReplace(void){/*{{{*/
+	this->values->AverageAndReplace();
+}
+/*}}}*/
 TriaInput* ControlInput::GetTriaInput(){/*{{{*/
 
Index: /issm/trunk-jpl/src/c/classes/Inputs/ControlInput.h
===================================================================
--- /issm/trunk-jpl/src/c/classes/Inputs/ControlInput.h	(revision 27702)
+++ /issm/trunk-jpl/src/c/classes/Inputs/ControlInput.h	(revision 27703)
@@ -48,4 +48,5 @@
 		TriaInput* GetTriaInput();
 		PentaInput* GetPentaInput();
+		void AverageAndReplace(void);
 };
 #endif  /* _CONTROLINPUT_H */
Index: /issm/trunk-jpl/src/c/classes/Inputs/TriaInput.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/Inputs/TriaInput.cpp	(revision 27702)
+++ /issm/trunk-jpl/src/c/classes/Inputs/TriaInput.cpp	(revision 27703)
@@ -408,16 +408,20 @@
 void TriaInput::AverageAndReplace(void){/*{{{*/
 
+	if(this->M!=this->numberofelements_local) _error_("not implemented for P1");
+
 	/*Get local sum and local size*/
 	IssmDouble sum  = 0.;
+	int        weight;
 	for(int i=0;i<this->M*this->N;i++) sum += this->values[i];
-	sum = sum/(this->M*this->N);
+	weight = this->M*this->N;
 
 	/*Get sum across all procs*/
 	IssmDouble all_sum;
+	int        all_weight;
 	ISSM_MPI_Allreduce((void*)&sum,(void*)&all_sum,1,ISSM_MPI_DOUBLE,ISSM_MPI_SUM,IssmComm::GetComm());
+	ISSM_MPI_Allreduce((void*)&weight,(void*)&all_weight,1,ISSM_MPI_INT,ISSM_MPI_SUM,IssmComm::GetComm());
 
 	/*Divide by number of procs*/
-	int        num_procs = IssmComm::GetSize();
-	IssmDouble newvalue = all_sum/num_procs;
+	IssmDouble newvalue = all_sum/reCast<IssmPDouble>(all_weight);
 
 	/*Now replace existing input*/
