Index: /issm/trunk-jpl/src/c/classes/Elements/Element.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/Elements/Element.cpp	(revision 22872)
+++ /issm/trunk-jpl/src/c/classes/Elements/Element.cpp	(revision 22873)
@@ -540,5 +540,5 @@
 	IssmDouble Delta18oTime;
 	IssmDouble dpermil,f;
-	IssmDouble time,yts,time_yr,month,time_clim,time_climt,time_climp;
+	IssmDouble time,yts,time_yr,month,time_clim,time_climt,time_climp,del_clim;
 	bool isTemperatureScaled=true;
 	bool isPrecipScaled=true;
@@ -547,7 +547,7 @@
 	this->parameters->FindParam(&f,SmbFEnum);
 	time_yr=floor(time/yts)*yts;
-	time_clim=time_yr;
-	time_climt=time_yr;
-	time_climp=time_yr;
+	time_clim=ceil(time/yts + 1e-10)*yts;
+	time_climt=ceil(time/yts + 1e-10)*yts;
+	time_climp=ceil(time/yts + 1e-10)*yts;
 
 	/*Get some pdd parameters*/
@@ -564,22 +564,16 @@
 	int offset;
 
-	offset=dynamic_cast<TransientInput*>(input)->GetTimeInputOffset(time_yr);
-	if (fmod(offset,12.)!=1){
-		time_clim=floor(dynamic_cast<TransientInput*>(input)->GetTimeByOffset(offset-fmod(offset,12.)+1)/yts)*yts;
-	}
+	offset=dynamic_cast<TransientInput*>(input)->GetTimeInputOffset(time_clim);
+	time_clim=dynamic_cast<TransientInput*>(input)->GetTimeByOffset(offset-11-fmod(offset-11,12.));
 
 	if(!isTemperatureScaled){
 		input3=this->inputs->GetInput(SmbTemperaturesReconstructedEnum);           _assert_(input3);
-		offset=dynamic_cast<TransientInput*>(input3)->GetTimeInputOffset(time_yr);
-		if (fmod(offset,12.)!=1){
-			time_climt=floor(dynamic_cast<TransientInput*>(input3)->GetTimeByOffset(offset-fmod(offset,12.)+1)/yts)*yts;
-		}
+		offset=dynamic_cast<TransientInput*>(input3)->GetTimeInputOffset(time_climt);
+		time_climt=dynamic_cast<TransientInput*>(input3)->GetTimeByOffset(offset-11-fmod(offset-11,12.));
 	}
 	if(!isPrecipScaled){
 		input4=this->inputs->GetInput(SmbPrecipitationsReconstructedEnum);         _assert_(input4);
-		offset=dynamic_cast<TransientInput*>(input4)->GetTimeInputOffset(time_yr);
-		if (fmod(offset,12.)!=1){
-			time_climp=floor(dynamic_cast<TransientInput*>(input4)->GetTimeByOffset(offset-fmod(offset,12.)+1)/yts)*yts;
-		}
+		offset=dynamic_cast<TransientInput*>(input4)->GetTimeInputOffset(time_climp);
+		time_climp=dynamic_cast<TransientInput*>(input4)->GetTimeByOffset(offset-11-fmod(offset-11,12.));
 	}
 
