Index: /issm/trunk-jpl/src/c/classes/Elements/Tria.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/Elements/Tria.cpp	(revision 24351)
+++ /issm/trunk-jpl/src/c/classes/Elements/Tria.cpp	(revision 24352)
@@ -2217,4 +2217,46 @@
 	delete gauss;
 	xDelete<IssmDouble>(timesteps);
+}
+/*}}}*/
+void       Tria::GetInputAveragesUpToCurrentTime(int input_enum,IssmDouble** pvalues, IssmDouble** ptimes, int* pnumtimes, IssmDouble currenttime){/*{{{*/
+
+	/*Get transient input time steps*/
+	int         numtimesteps;
+	IssmDouble *timesteps    = NULL;
+	TransientInput2* transient_input  = this->inputs2->GetTransientInput(input_enum);
+	transient_input->GetAllTimes(&timesteps,&numtimesteps);
+
+	/*Figure out how many time steps we are going to return: */
+	int  numsteps               = 0;
+	bool iscurrenttime_included = false;
+	for(int i=0;i<numtimesteps;i++){
+		if(timesteps[i]==currenttime) iscurrenttime_included=true;
+		if(timesteps[i]>currenttime)  break;
+		else numsteps++;
+	}
+	if(iscurrenttime_included==false)numsteps++;
+
+	/*allocate: */
+	IssmDouble* times=xNew<IssmDouble>(numsteps);
+	IssmDouble* values=xNew<IssmDouble>(numsteps);
+
+	for(int i=0;i<numsteps;i++){
+		if((iscurrenttime_included==false) && (i==(numsteps-1))){
+			Input2* input = this->GetInput2(input_enum,currenttime);
+			input->GetInputAverage(&values[i]);
+			times[i]=currenttime;
+		}
+		else{
+			TriaInput2* input = transient_input->GetTriaInput(i);
+			this->InputServe(input);
+			input->GetInputAverage(&values[i]);
+			times[i]=timesteps[i];
+		}
+	}
+
+	/*Assign output pointers*/
+	*pvalues=values;
+	*ptimes=times;
+	*pnumtimes=numtimesteps;
 }
 /*}}}*/
@@ -5158,11 +5200,8 @@
 
 	/*pull thickness averages! */
-	TransientInput2* thickness_input=this->inputs2->GetTransientInput(ThicknessEnum); 
-	IssmDouble* hes=NULL;
-	IssmDouble* times=NULL;
+	IssmDouble *hes      = NULL;
+	IssmDouble *times    = NULL;
 	int         numtimes;
-	_error_("Next line not implemented yet");
-	//thickness_input->GetInputAveragesUpToCurrentTime(&hes,&times,&numtimes,currenttime);
-
+	this->GetInputAveragesUpToCurrentTime(ThicknessEnum,&hes,&times,&numtimes,currenttime);
 
 	/*recover mantle viscosity: */
Index: /issm/trunk-jpl/src/c/classes/Elements/Tria.h
===================================================================
--- /issm/trunk-jpl/src/c/classes/Elements/Tria.h	(revision 24351)
+++ /issm/trunk-jpl/src/c/classes/Elements/Tria.h	(revision 24352)
@@ -177,4 +177,5 @@
 		void           DatasetInputCreate(IssmDouble* array,int M,int N,int* individual_enums,int num_inputs,Inputs2* inputs2,IoModel* iomodel,int input_enum);
 		void           CreateInputTimeAverage(int transientinput_enum,int averagedinput_enum,IssmDouble init_time,IssmDouble end_time);
+		void           GetInputAveragesUpToCurrentTime(int input_enum,IssmDouble** pvalues, IssmDouble** ptimes, int* pnumtimes, IssmDouble currenttime);
 		IssmDouble     GetArea(void);
 		IssmDouble     GetHorizontalSurfaceArea(void);
