Index: /issm/trunk-jpl/src/c/classes/Inputs/TransientInput.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/Inputs/TransientInput.cpp	(revision 26196)
+++ /issm/trunk-jpl/src/c/classes/Inputs/TransientInput.cpp	(revision 26197)
@@ -420,5 +420,19 @@
 	this->parameters->FindParam(&cycle,TimesteppingCycleForcingEnum);
 
-	if(cycle) _error_("not implemented yet");
+	/*Change input time if we cycle through the forcing*/
+	IssmDouble time0 = this->timesteps[0];
+	IssmDouble time1 = this->timesteps[this->numtimesteps - 1];
+	if(cycle && (time<time0 || time>time1)){
+
+		/*See by how many intervals we have to offset time*/
+		IssmDouble deltat = time1-time0;
+
+		//int num_intervals = floor((time-time0)/deltat); //Cannot do that because of AD!
+		int num_intervals = reCast<int,IssmDouble>(fabs(time-time0)/deltat);
+		if(time<time0) num_intervals = -num_intervals-1;
+
+		/*Now offset time so that we do the right interpolation below*/
+		time = time - num_intervals*deltat;
+	}
 
 	/*Figure step out*/
@@ -480,5 +494,4 @@
 		this->current_input->AXPY(input2,alpha2);
 	}
-
 }/*}}}*/
 void TransientInput::SetAverageAsCurrentTimeInput(IssmDouble start_time,IssmDouble end_time, int averaging_method){/*{{{*/
