Index: /issm/trunk-jpl/src/c/classes/Elements/Element.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/Elements/Element.cpp	(revision 23818)
+++ /issm/trunk-jpl/src/c/classes/Elements/Element.cpp	(revision 23819)
@@ -3255,5 +3255,5 @@
 	IssmDouble thermo_scaling=1.0;
 	IssmDouble adThresh=1023.0;
-	int offsetend;
+	int offsetend=-1;
 	IssmDouble time0, timeend, delta;
 
@@ -3478,5 +3478,5 @@
 		//If this is a climatology, we need to repeat the forcing after the final time
 		offsetend=dynamic_cast<TransientInput*>(Ta_input)->GetTimeInputOffset(finaltime);
-		time0=dynamic_cast<TransientInput*>(Ta_input)->GetTimeByOffset(0);
+		time0=dynamic_cast<TransientInput*>(Ta_input)->GetTimeByOffset(-1);
 		timeend=dynamic_cast<TransientInput*>(Ta_input)->GetTimeByOffset(offsetend);
 		if (time>time0 & timeend>time0){
Index: /issm/trunk-jpl/src/c/modules/SurfaceMassBalancex/SurfaceMassBalancex.cpp
===================================================================
--- /issm/trunk-jpl/src/c/modules/SurfaceMassBalancex/SurfaceMassBalancex.cpp	(revision 23818)
+++ /issm/trunk-jpl/src/c/modules/SurfaceMassBalancex/SurfaceMassBalancex.cpp	(revision 23819)
@@ -19,5 +19,5 @@
 		int v;
 		IssmDouble time,dt,delta,starttime,finaltime;
-		int offsetend;
+		int offsetend=-1;
 		IssmDouble time0, timeend, timeclim;
 
@@ -44,6 +44,7 @@
 			//Get accumulation climatology value
 			offsetend=dynamic_cast<TransientInput*>(smb_input)->GetTimeInputOffset(finaltime);
-			time0=dynamic_cast<TransientInput*>(smb_input)->GetTimeByOffset(0);
+			time0=dynamic_cast<TransientInput*>(smb_input)->GetTimeByOffset(-1);
 			timeend=dynamic_cast<TransientInput*>(smb_input)->GetTimeByOffset(offsetend);
+			timeclim=time;
 			if (time>time0 & timeend>time0){
 				delta=(time-time0) - (timeend-time0)*(reCast<int,IssmDouble>((time-time0)/(timeend-time0)));
@@ -406,5 +407,5 @@
 	bool isclimatology=false;
 	IssmDouble time,delta,starttime,finaltime;
-	int offsetend;
+	int offsetend=-1;
 	IssmDouble time0, timeend, timeclim;
 
@@ -435,6 +436,7 @@
 			//Get accumulation climatology value
 			offsetend=dynamic_cast<TransientInput*>(acc_input)->GetTimeInputOffset(finaltime);
-			time0=dynamic_cast<TransientInput*>(acc_input)->GetTimeByOffset(0);
+			time0=dynamic_cast<TransientInput*>(acc_input)->GetTimeByOffset(-1);
 			timeend=dynamic_cast<TransientInput*>(acc_input)->GetTimeByOffset(offsetend);
+			timeclim=time;
 			if (time>time0 & timeend>time0){
 				delta=(time-time0) - (timeend-time0)*(reCast<int,IssmDouble>((time-time0)/(timeend-time0)));
@@ -447,6 +449,7 @@
 			//Get evaporation climatology value
 			offsetend=dynamic_cast<TransientInput*>(evap_input)->GetTimeInputOffset(finaltime);
-			time0=dynamic_cast<TransientInput*>(evap_input)->GetTimeByOffset(0);
+			time0=dynamic_cast<TransientInput*>(evap_input)->GetTimeByOffset(-1);
 			timeend=dynamic_cast<TransientInput*>(evap_input)->GetTimeByOffset(offsetend);
+			timeclim=time;
 			if (time>time0 & timeend>time0){
 				delta=(time-time0) - (timeend-time0)*(reCast<int,IssmDouble>((time-time0)/(timeend-time0)));
@@ -459,6 +462,7 @@
 			//Get runoff climatology value
 			offsetend=dynamic_cast<TransientInput*>(runoff_input)->GetTimeInputOffset(finaltime);
-			time0=dynamic_cast<TransientInput*>(runoff_input)->GetTimeByOffset(0);
+			time0=dynamic_cast<TransientInput*>(runoff_input)->GetTimeByOffset(-1);
 			timeend=dynamic_cast<TransientInput*>(runoff_input)->GetTimeByOffset(offsetend);
+			timeclim=time;
 			if (time>time0 & timeend>time0){
 				delta=(time-time0) - (timeend-time0)*(reCast<int,IssmDouble>((time-time0)/(timeend-time0)));
@@ -501,5 +505,5 @@
 	bool isclimatology=false;
 	IssmDouble time,delta,starttime,finaltime;
-	int offsetend;
+	int offsetend=-1;
 	IssmDouble time0, timeend, timeclim;
 
@@ -532,6 +536,7 @@
 			//Get accumulation climatology value
 			offsetend=dynamic_cast<TransientInput*>(acc_input)->GetTimeInputOffset(finaltime);
-			time0=dynamic_cast<TransientInput*>(acc_input)->GetTimeByOffset(0);
+			time0=dynamic_cast<TransientInput*>(acc_input)->GetTimeByOffset(-1);
 			timeend=dynamic_cast<TransientInput*>(acc_input)->GetTimeByOffset(offsetend);
+			timeclim=time;
 			if (time>time0 & timeend>time0){
 				delta=(time-time0) - (timeend-time0)*(reCast<int,IssmDouble>((time-time0)/(timeend-time0)));
@@ -544,6 +549,7 @@
 			//Get evaporation climatology value
 			offsetend=dynamic_cast<TransientInput*>(evap_input)->GetTimeInputOffset(finaltime);
-			time0=dynamic_cast<TransientInput*>(evap_input)->GetTimeByOffset(0);
+			time0=dynamic_cast<TransientInput*>(evap_input)->GetTimeByOffset(-1);
 			timeend=dynamic_cast<TransientInput*>(evap_input)->GetTimeByOffset(offsetend);
+			timeclim=time;
 			if (time>time0){
 				delta=(time-time0) - (timeend-time0)*(reCast<int,IssmDouble>((time-time0)/(timeend-time0)));
@@ -556,6 +562,7 @@
 			//Get melt climatology value
 			offsetend=dynamic_cast<TransientInput*>(melt_input)->GetTimeInputOffset(finaltime);
-			time0=dynamic_cast<TransientInput*>(melt_input)->GetTimeByOffset(0);
+			time0=dynamic_cast<TransientInput*>(melt_input)->GetTimeByOffset(-1);
 			timeend=dynamic_cast<TransientInput*>(melt_input)->GetTimeByOffset(offsetend);
+			timeclim=time;
 			if (time>time0){
 				delta=(time-time0) - (timeend-time0)*(reCast<int,IssmDouble>((time-time0)/(timeend-time0)));
@@ -568,6 +575,7 @@
 			//Get refreeze climatology value
 			offsetend=dynamic_cast<TransientInput*>(refreeze_input)->GetTimeInputOffset(finaltime);
-			time0=dynamic_cast<TransientInput*>(refreeze_input)->GetTimeByOffset(0);
+			time0=dynamic_cast<TransientInput*>(refreeze_input)->GetTimeByOffset(-1);
 			timeend=dynamic_cast<TransientInput*>(refreeze_input)->GetTimeByOffset(offsetend);
+			timeclim=time;
 			if (time>time0){
 				delta=(time-time0) - (timeend-time0)*(reCast<int,IssmDouble>((time-time0)/(timeend-time0)));
