Index: issm/trunk-jpl/src/c/classes/Params/TransientParam.cpp
===================================================================
--- issm/trunk-jpl/src/c/classes/Params/TransientParam.cpp	(revision 19235)
+++ issm/trunk-jpl/src/c/classes/Params/TransientParam.cpp	(revision 19236)
@@ -20,5 +20,5 @@
 }
 /*}}}*/
-TransientParam::TransientParam(int in_enum_type,IssmDouble* in_values,IssmDouble* in_time,int in_N){/*{{{*/
+TransientParam::TransientParam(int in_enum_type,IssmDouble* in_values,IssmDouble* in_time,bool interpolation_on,int in_N){/*{{{*/
 
 	_assert_(in_values && in_time);
@@ -26,4 +26,5 @@
 	enum_type=in_enum_type;
 	N=in_N;
+	interpolation=interpolation_on;
 
 	values=xNew<IssmDouble>(N);
@@ -59,7 +60,7 @@
 }
 /*}}}*/
-int    TransientParam::Id(void){ return -1; }/*{{{*/
+int  TransientParam::Id(void){ return -1; }/*{{{*/
 /*}}}*/
-int TransientParam::ObjectEnum(void){/*{{{*/
+int  TransientParam::ObjectEnum(void){/*{{{*/
 
 	return TransientParamEnum;
@@ -69,5 +70,5 @@
 Object* TransientParam::copy() {/*{{{*/
 
-	return new TransientParam(this->enum_type,this->values,this->timesteps,this->N);
+	return new TransientParam(this->enum_type,this->values,this->timesteps,this->interpolation,this->N);
 
 }
@@ -87,5 +88,5 @@
 		found=true;
 	}
-	else if(time>this->timesteps[this->N-1]){
+	else if(time>this->timesteps[this->N-1] || !interpolation){
 		/*get values for the last time: */
 		output=this->values[this->N-1];
Index: issm/trunk-jpl/src/c/classes/Params/TransientParam.h
===================================================================
--- issm/trunk-jpl/src/c/classes/Params/TransientParam.h	(revision 19235)
+++ issm/trunk-jpl/src/c/classes/Params/TransientParam.h	(revision 19236)
@@ -23,4 +23,5 @@
 		int         enum_type;
 		int         N;
+		bool        interpolation;
 		IssmDouble *values;
 		IssmDouble *timesteps;
@@ -29,5 +30,5 @@
 		/*TransientParam constructors, destructors: {{{*/
 		TransientParam();
-		TransientParam(int in_enum_type,IssmDouble* in_values,IssmDouble* in_time,int in_N);
+		TransientParam(int in_enum_type,IssmDouble* in_values,IssmDouble* in_time,bool interpolation_on,int in_N);
 		~TransientParam();
 		/*}}}*/
Index: issm/trunk-jpl/src/c/modules/ModelProcessorx/CreateParameters.cpp
===================================================================
--- issm/trunk-jpl/src/c/modules/ModelProcessorx/CreateParameters.cpp	(revision 19235)
+++ issm/trunk-jpl/src/c/modules/ModelProcessorx/CreateParameters.cpp	(revision 19236)
@@ -22,5 +22,5 @@
 	char**      requestedoutputs = NULL;
 	IssmDouble  time;
-	bool        isdelta18o,ismungsm,isd18opd;
+	bool        isdelta18o,ismungsm,isd18opd,interp;
 
 	/*parameters for mass flux:*/
@@ -101,4 +101,5 @@
 	parameters->AddObject(iomodel->CopyConstantObject(SurfaceforcingsEnum));
 	iomodel->Constant(&smb_model,SurfaceforcingsEnum);
+	iomodel->Constant(&interp,TimesteppingInterpForcingsEnum);
 	switch(smb_model){
 		case SMBEnum:
@@ -119,15 +120,15 @@
 			  iomodel->FetchData(&temp,&N,&M,SurfaceforcingsPfacEnum); _assert_(N==2);
 			  for(i=0;i<M;i++) temp[M+i]=temp[M+i];
-			  parameters->AddObject(new TransientParam(SurfaceforcingsPfacEnum,&temp[0],&temp[M],M));
+			  parameters->AddObject(new TransientParam(SurfaceforcingsPfacEnum,&temp[0],&temp[M],interp,M));
 			  iomodel->DeleteData(temp,SurfaceforcingsPfacEnum);
 			
 			  iomodel->FetchData(&temp,&N,&M,SurfaceforcingsTdiffEnum); _assert_(N==2);
 			  for(i=0;i<M;i++) temp[M+i]=temp[M+i];
-			  parameters->AddObject(new TransientParam(SurfaceforcingsTdiffEnum,&temp[0],&temp[M],M));
+			  parameters->AddObject(new TransientParam(SurfaceforcingsTdiffEnum,&temp[0],&temp[M],interp,M));
 			  iomodel->DeleteData(temp,SurfaceforcingsTdiffEnum);
 
 			  iomodel->FetchData(&temp,&N,&M,SurfaceforcingsSealevEnum); _assert_(N==2);
 			  for(i=0;i<M;i++) temp[M+i]=temp[M+i];
-			  parameters->AddObject(new TransientParam(SurfaceforcingsSealevEnum,&temp[0],&temp[M],M));
+			  parameters->AddObject(new TransientParam(SurfaceforcingsSealevEnum,&temp[0],&temp[M],interp,M));
 			  iomodel->DeleteData(temp,SurfaceforcingsSealevEnum);
 			}
@@ -137,10 +138,10 @@
 				iomodel->FetchData(&temp,&N,&M,SurfaceforcingsDelta18oEnum); _assert_(N==2);
 				for(i=0;i<M;i++) temp[M+i]=yts*temp[M+i];
-				parameters->AddObject(new TransientParam(SurfaceforcingsDelta18oEnum,&temp[0],&temp[M],M));
+				parameters->AddObject(new TransientParam(SurfaceforcingsDelta18oEnum,&temp[0],&temp[M],interp,M));
 				iomodel->DeleteData(temp,SurfaceforcingsDelta18oEnum);
 
 				iomodel->FetchData(&temp,&N,&M,SurfaceforcingsDelta18oSurfaceEnum); _assert_(N==2);
 				for(i=0;i<M;i++) temp[M+i]=yts*temp[M+i];
-				parameters->AddObject(new TransientParam(SurfaceforcingsDelta18oSurfaceEnum,&temp[0],&temp[M],M));
+				parameters->AddObject(new TransientParam(SurfaceforcingsDelta18oSurfaceEnum,&temp[0],&temp[M],interp,M));
 				iomodel->DeleteData(temp,SurfaceforcingsDelta18oSurfaceEnum);
 			}
@@ -161,5 +162,5 @@
 				iomodel->FetchData(&temp,&N,&M,SurfaceforcingsDelta18oEnum); _assert_(N==2);
 				for(i=0;i<M;i++) temp[M+i]=yts*temp[M+i];
-				parameters->AddObject(new TransientParam(SurfaceforcingsDelta18oEnum,&temp[0],&temp[M],M));
+				parameters->AddObject(new TransientParam(SurfaceforcingsDelta18oEnum,&temp[0],&temp[M],interp,M));
 				iomodel->DeleteData(temp,SurfaceforcingsDelta18oEnum);
 				
Index: issm/trunk-jpl/src/c/modules/SurfaceMassBalancex/SurfaceMassBalancex.cpp
===================================================================
--- issm/trunk-jpl/src/c/modules/SurfaceMassBalancex/SurfaceMassBalancex.cpp	(revision 19235)
+++ issm/trunk-jpl/src/c/modules/SurfaceMassBalancex/SurfaceMassBalancex.cpp	(revision 19236)
@@ -40,6 +40,6 @@
 				if(VerboseSolution()) _printf0_("   call Delta18opdParameterization module\n");
 				Delta18opdParameterizationx(femmodel);
-			if(VerboseSolution()) _printf0_("   call positive degree day module\n");
-			PositiveDegreeDayx(femmodel);
+				if(VerboseSolution()) _printf0_("   call positive degree day module\n");
+				PositiveDegreeDayx(femmodel);
 			} 
 			break;
