Index: /issm/trunk-jpl/src/c/classes/FemModel.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/FemModel.cpp	(revision 22278)
+++ /issm/trunk-jpl/src/c/classes/FemModel.cpp	(revision 22279)
@@ -4469,5 +4469,5 @@
 				/*Intermediaries*/
 				Element* element=xDynamicCast<Element*>(elements->GetObjectByOffset(j));
-				transient_input->Configure(element->parameters);
+				//transient_input->Configure(element->parameters);
 				element->inputs->AddInput(transient_input);
 			}
@@ -4513,5 +4513,5 @@
 /*}}}*/
 void FemModel::AverageTransientOutputx(int* input_enum,IssmDouble init_time,int numoutputs){ /*{{{*/
-	IssmDouble* time_averaged=NULL;
+
   for(int i=0;i<numoutputs;i++){
 		if(input_enum[i]<0){
@@ -4523,12 +4523,13 @@
 				Element* element=xDynamicCast<Element*>(elements->GetObjectByOffset(j));
 				int  numvertices = element->GetNumberOfVertices();
-				//xNew<IssmDouble>(numvertices);
+				IssmDouble* time_averaged=NULL;
 
 				Input* input=element->inputs->GetInput(input_enum[i]); _assert_(input);
 				TransientInput* stacking_input=NULL;
 				stacking_input=dynamic_cast<TransientInput*>(input);
-				stacking_input->GetInputAverageOnTimes(&time_averaged, init_time);
-
-				element->AddInput(TimeAverageEffectivePressureEnum,time_averaged,P1Enum);
+				stacking_input->GetInputAverageOnTimes(&time_averaged,init_time);
+
+				element->AddInput(TimeAverageEffectivePressureEnum,&time_averaged[0],P1Enum);
+				xDelete<IssmDouble>(time_averaged);
 			}
 		}
Index: /issm/trunk-jpl/src/c/classes/Inputs/TransientInput.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/Inputs/TransientInput.cpp	(revision 22278)
+++ /issm/trunk-jpl/src/c/classes/Inputs/TransientInput.cpp	(revision 22279)
@@ -313,23 +313,27 @@
 	IssmDouble  time;
 	IssmDouble  preceding_time;
-	IssmDouble  values[3] = {0.0,0.0,0.0};
+	IssmDouble* values= NULL;
+
+	values=xNew<IssmDouble>(3);
 
 	for(int i=0;i<this->numtimesteps;i++){
 		time						 = this->timesteps[i];
+		TriaInput*	input		 = (TriaInput*)this->inputs->GetObjectByOffset(i); _assert_(input);
+		int					numnodes = input->NumberofNodes(input->interpolation_type);
 		if(i==0){
 			preceding_time = init_time;
+			for(int j=0;j<numnodes;j++){
+				values[j]=(input->values[j]*(time-preceding_time));
+			}
 		}
 		else{
 			preceding_time = this->timesteps[i-1];
+			for(int j=0;j<numnodes;j++){
+				values[j]+=(input->values[j]*(time-preceding_time));
+				if(i==this->numtimesteps-1){
+					values[j]=values[j]/(this->timesteps[this->numtimesteps-1]-init_time);
+				}
+			}
 		}
-		TriaInput*	input		 = (TriaInput*)this->inputs->GetObjectByOffset(i); _assert_(input);
-		int					numnodes = input->NumberofNodes(input->interpolation_type);
-		for(int j=0;j<numnodes;j++){
-			values[j]+=(input->values[j]*(time-preceding_time));
-		}
-	}
-	for(int j	=	0;j<3;j++){
-		values[j]/=(this->timesteps[this->numtimesteps-1]-init_time);
-		//printf("final value is %e\n",values[j]);
 	}
 	*pvalues=values;
