Index: /issm/trunk-jpl/src/c/classes/Elements/Elements.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/Elements/Elements.cpp	(revision 16468)
+++ /issm/trunk-jpl/src/c/classes/Elements/Elements.cpp	(revision 16469)
@@ -226,4 +226,5 @@
 			/*Serialize and add to results*/
 			vector_serial=vector->ToMPISerial();
+			results->DeleteResult(resultsenums[i],resultssteps[i]);
 			if(my_rank==0){
 				/*No need to add this vector for all cpus*/
@@ -231,8 +232,8 @@
 				IssmPDouble* vector_serial_passive=xNew<IssmPDouble>(vectorsize);
 				for(int k=0;k<vectorsize;k++)vector_serial_passive[k]=reCast<IssmPDouble>(vector_serial[k]);
-				results->AddObject(new GenericExternalResult<double*>(results->Size()+1,resultsenums[i],vector_serial_passive,vectorsize,1,resultssteps[i],resultstimes[i]));
+				results->AddResult(new GenericExternalResult<IssmPDouble*>(results->Size()+1,resultsenums[i],vector_serial_passive,vectorsize,1,resultssteps[i],resultstimes[i]));
 				xDelete<IssmPDouble>(vector_serial_passive);
 				#else
-				results->AddObject(new GenericExternalResult<double*>(results->Size()+1,resultsenums[i],vector_serial,vectorsize,1,resultssteps[i],resultstimes[i]));
+				results->AddResult(new GenericExternalResult<IssmPDouble*>(results->Size()+1,resultsenums[i],vector_serial,vectorsize,1,resultssteps[i],resultstimes[i]));
 				#endif
 			}
Index: /issm/trunk-jpl/src/c/classes/ExternalResults/GenericExternalResult.h
===================================================================
--- /issm/trunk-jpl/src/c/classes/ExternalResults/GenericExternalResult.h	(revision 16468)
+++ /issm/trunk-jpl/src/c/classes/ExternalResults/GenericExternalResult.h	(revision 16469)
@@ -371,5 +371,5 @@
 template <> inline void GenericExternalResult<Vector<IssmPDouble>*>::Echo(void){ /*{{{*/
 
-	_printf_("GenericExternalResult<IssmPDouble*>:\n");
+	_printf_("GenericExternalResult<Vector<IssmPDouble>*>:\n");
 	this->GenericEcho();
 	this->value->Echo();
Index: /issm/trunk-jpl/src/c/classes/ExternalResults/Results.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/ExternalResults/Results.cpp	(revision 16468)
+++ /issm/trunk-jpl/src/c/classes/ExternalResults/Results.cpp	(revision 16469)
@@ -58,5 +58,4 @@
 	 * object before adding this new one: */
 	vector<Object*>::iterator object;
-	ElementResult* result=NULL;
 
 	/*In debugging mode, check that the input is not a NULL pointer*/
@@ -65,5 +64,5 @@
 	for(object=objects.begin() ; object<objects.end(); object++){
 
-		result=dynamic_cast<ElementResult*>(*object);
+		ElementResult* result=dynamic_cast<ElementResult*>(*object);
 
 		if(result->InstanceEnum()==in_result->InstanceEnum()){
@@ -79,2 +78,44 @@
 }
 /*}}}*/
+/*FUNCTION Results::AddResult(ExternalResult* in_result){{{*/
+int Results::AddResult(ExternalResult* in_result){
+
+	/*First, go through dataset of inputs and check whether any input 
+	 * with the same name is already in. If so, erase the corresponding 
+	 * object before adding this new one: */
+
+	/*In debugging mode, check that the input is not a NULL pointer*/
+	_assert_(in_result);
+
+	for(int i=0;i<this->Size();i++){
+		ExternalResult* result=dynamic_cast<ExternalResult*>(this->GetObjectByOffset(i));
+
+		if(result->InstanceEnum()==in_result->InstanceEnum()){
+			if(result->GetStep()==in_result->GetStep()){
+				this->DeleteObject(result);
+				break;
+			}
+		}
+	}
+	this->AddObject(in_result);
+
+	return 1;
+}
+/*}}}*/
+/*FUNCTION Results::DeleteResult(ExternalResult* in_result){{{*/
+int Results::DeleteResult(int result_enum,int result_step){
+
+	for(int i=0;i<this->Size();i++){
+		ExternalResult* result=dynamic_cast<ExternalResult*>(this->GetObjectByOffset(i));
+
+		if(result->InstanceEnum()==result_enum){
+			if(result->GetStep()==result_step){
+				this->DeleteObject(result);
+				break;
+			}
+		}
+	}
+
+	return 1;
+}
+/*}}}*/
Index: /issm/trunk-jpl/src/c/classes/ExternalResults/Results.h
===================================================================
--- /issm/trunk-jpl/src/c/classes/ExternalResults/Results.h	(revision 16468)
+++ /issm/trunk-jpl/src/c/classes/ExternalResults/Results.h	(revision 16469)
@@ -7,4 +7,5 @@
 class Parameters;
 class ElementResult;
+class ExternalResult;
 
 /*!\brief Declaration of Results class.
@@ -22,4 +23,6 @@
 		/*Mehthos*/
 		int AddResult(ElementResult* result);
+		int AddResult(ExternalResult* result);
+		int DeleteResult(int result_enum,int result_step);
 		void Write(Parameters* parameters);
 };
Index: /issm/trunk-jpl/src/c/modules/OutputResultsx/OutputResultsx.cpp
===================================================================
--- /issm/trunk-jpl/src/c/modules/OutputResultsx/OutputResultsx.cpp	(revision 16468)
+++ /issm/trunk-jpl/src/c/modules/OutputResultsx/OutputResultsx.cpp	(revision 16469)
@@ -46,5 +46,5 @@
 		parameters->FindParam(&solutiontype,SolutionTypeEnum);
 		EnumToStringx(&solutiontypestring,solutiontype);
-		results->AddObject(new GenericExternalResult<char*>(results->Size()+1,SolutionTypeEnum,solutiontypestring,1,0));
+		results->AddResult(new GenericExternalResult<char*>(results->Size()+1,SolutionTypeEnum,solutiontypestring,1,0));
 		xDelete<char>(solutiontypestring);
 	}
