Index: /issm/trunk-jpl/src/c/modules/SurfaceMassBalancex/Gembx.cpp
===================================================================
--- /issm/trunk-jpl/src/c/modules/SurfaceMassBalancex/Gembx.cpp	(revision 24704)
+++ /issm/trunk-jpl/src/c/modules/SurfaceMassBalancex/Gembx.cpp	(revision 24705)
@@ -35,14 +35,15 @@
 
 	int        count=0;
-	IssmDouble time,dt,finaltime,starttime;
+	IssmDouble time,dt,finaltime;
 	IssmDouble timeclim=0.0;
 	IssmDouble t,smb_dt;
    IssmDouble delta;
 	bool       isclimatology=false;
-
+	bool       linear_interp=true;
+
+	femmodel->parameters->FindParam(&linear_interp,TimesteppingInterpForcingsEnum); /*is interpolation requested*/
 	femmodel->parameters->FindParam(&time,TimeEnum);                        /*transient core time at which we run the smb core*/
    femmodel->parameters->FindParam(&dt,TimesteppingTimeStepEnum);          /*transient core time step*/
 	femmodel->parameters->FindParam(&finaltime,TimesteppingFinalTimeEnum);
-	femmodel->parameters->FindParam(&starttime,TimesteppingStartTimeEnum);
    femmodel->parameters->FindParam(&smb_dt,SmbDtEnum);                     /*time period for the smb solution,  usually smaller than the glaciological dt*/
 	femmodel->parameters->FindParam(&isclimatology,SmbIsclimatologyEnum);
@@ -56,5 +57,5 @@
 	/*Start loop: */
 	count=1;
-	for (t=time;t<time+dt;t=t+smb_dt){
+	for (t=time;t<=time+dt-smb_dt;t=t+smb_dt){
 
 		for(int i=0;i<femmodel->elements->Size();i++){
@@ -76,5 +77,6 @@
 				}
 			}
-			timeinputs = t-time+timeclim;
+			if (linear_interp) timeinputs = t-time+timeclim;
+			else timeinputs = t-time+timeclim+smb_dt/2;
 			element->SmbGemb(timeinputs,count);
 		}
