Index: /issm/trunk-jpl/src/c/cores/transient_core.cpp
===================================================================
--- /issm/trunk-jpl/src/c/cores/transient_core.cpp	(revision 25563)
+++ /issm/trunk-jpl/src/c/cores/transient_core.cpp	(revision 25564)
@@ -276,5 +276,5 @@
 	bool       isoceancoupling,isslr;
 	int        step,timestepping;
-	int        recording_frequency,finalcheckpoint;
+	int        recording_frequency;
 	DataSet*   dependent_objects=NULL;
 
@@ -291,4 +291,6 @@
 
 	std::vector<IssmDouble> time_all;
+	std::vector<IssmDouble> dt_all;
+	std::vector<int>        checkpoint_steps;
 	int                     Ysize = 0;
 	CountDoublesFunctor   *hdl_countdoubles = NULL;
@@ -318,4 +320,5 @@
 		femmodel->parameters->SetParam(false,SaveResultsEnum);
 		time_all.push_back(time);
+		dt_all.push_back(dt);
 
 		if(VerboseSolution()){
@@ -325,8 +328,8 @@
 
 		/*Store Model State at the beginning of the step*/
-		if(step%recording_frequency==0){
+		if(step%recording_frequency==0 || step==1){
 			if(VerboseSolution()) _printf0_("   checkpointing model (step: "<<step<<")\n");
 			femmodel->CheckPointAD(step);
-			finalcheckpoint = step;
+			checkpoint_steps.push_back(step);
 		}
 
@@ -401,7 +404,8 @@
 
 	/*reverse loop for transient step (G)*/
-	for(int reverse_step = finalcheckpoint;reverse_step>0; reverse_step-=recording_frequency){
+	for(vector<int>::reverse_iterator iter = checkpoint_steps.rbegin(); iter != checkpoint_steps.rend(); iter++){
 
 		/*Restore model from this step*/
+		int reverse_step = *iter;
 		tape_codi.reset();
 		femmodel->RestartAD(reverse_step);
@@ -427,7 +431,15 @@
 			int        thisstep = reverse_step+ii;
 			IssmDouble thistime = time_all[reverse_step+ii-1];
-			_printf0_("step "<<thisstep<<" ("<<ii+1<<"/"<<recording_frequency<<") time [yr]: "<<std::fixed<<std::setprecision(2)<<thistime/yts<<"\n");
+			IssmDouble thisdt   = dt_all[reverse_step+ii-1];
+			femmodel->parameters->SetParam(thistime,TimeEnum);
+			femmodel->parameters->SetParam(thisstep,StepEnum);
+			femmodel->parameters->SetParam(thisdt,TimesteppingTimeStepEnum);
+			_printf0_("step "<<thisstep<<" ("<<ii+1<<"/"<<recording_frequency<<") time [yr]: "\
+						<<std::fixed<<std::setprecision(2)<<thistime/yts<< " (time step: " << thisdt/yts << ")\n");
 			transient_step(femmodel);
+
+			/*First and last segment need special treatment*/
 			if(thisstep==finalstep) break;
+			if(reverse_step==1 && ii==recording_frequency-2) break;
 		}
 
