Index: /issm/trunk-jpl/src/m/classes/timestepping.js
===================================================================
--- /issm/trunk-jpl/src/m/classes/timestepping.js	(revision 26194)
+++ /issm/trunk-jpl/src/m/classes/timestepping.js	(revision 26195)
@@ -15,4 +15,5 @@
 		//should we interpolate forcings between timesteps?
 		this.interp_forcings=1;
+		this.cycle_forcing=0;
 	}// }}}
 	this.disp= function(){// {{{
@@ -25,4 +26,5 @@
 		fielddisplay(this,'time_step','length of time steps [' +unit+ ']');
 		fielddisplay(this,'interp_forcings','interpolate in time between requested forcing values ? (0 or 1)');
+		fielddisplay(this,'cycle_forcing','cycle through forcing ? (0 or 1)');
 		fielddisplay(this,'coupling_time','length of coupling time steps with ocean model [' +unit+ ']');
 
@@ -38,4 +40,5 @@
 		checkfield(md,'fieldname','timestepping.time_step','numel',[1],'>=',0,'NaN',1,'Inf',1);
 		checkfield(md,'fieldname','timestepping.interp_forcings','numel',[1],'values',[0,1]);
+		checkfield(md,'fieldname','timestepping.cycle_forcing','numel',[1],'values',[0,1]);
 		checkfield(md,'fieldname','timestepping.coupling_time','numel',[1],'>=',0,'NaN',1,'Inf',1);
 		if (this.final_time-this.start_time<0){
@@ -53,4 +56,5 @@
 		WriteData(fid,prefix,'object',this,'fieldname','time_step','format','Double','scale',scale);
 		WriteData(fid,prefix,'object',this,'fieldname','interp_forcings','format','Boolean');
+		WriteData(fid,prefix,'object',this,'fieldname','cycle_forcing','format','Boolean');
 		WriteData(fid,prefix,'object',this,'fieldname','coupling_time','format','Double','scale',scale);
 
@@ -64,4 +68,5 @@
 	this.time_step       = 0.;
 	this.interp_forcings = 1;
+	this.cycle_forcing   = 0;
 	this.coupling_time   = 0.;
 
Index: /issm/trunk-jpl/src/m/classes/timestepping.m
===================================================================
--- /issm/trunk-jpl/src/m/classes/timestepping.m	(revision 26194)
+++ /issm/trunk-jpl/src/m/classes/timestepping.m	(revision 26195)
@@ -10,4 +10,5 @@
 		time_step       = 0.;
 		interp_forcings = 1;
+		cycle_forcing   = 0;
 		coupling_time   = 0.;
 	end
@@ -33,4 +34,5 @@
 			%should we interpolate forcings between timesteps?
 			self.interp_forcings=1;
+			self.cycle_forcing=0;
 		end % }}}
 		function md = checkconsistency(self,md,solution,analyses) % {{{
@@ -40,4 +42,5 @@
 			md = checkfield(md,'fieldname','timestepping.time_step','numel',[1],'>=',0,'NaN',1,'Inf',1);
 			md = checkfield(md,'fieldname','timestepping.interp_forcings','numel',[1],'values',[0 1]);
+			md = checkfield(md,'fieldname','timestepping.cycle_forcing','numel',[1],'values',[0 1]);
 			if self.final_time-self.start_time<0,
 				md = checkmessage(md,'timestepping.final_time should be larger than timestepping.start_time');
@@ -56,4 +59,5 @@
 			fielddisplay(self,'time_step',['length of time steps [' unit ']']);
 			fielddisplay(self,'interp_forcings','interpolate in time between requested forcing values ? (0 or 1)');
+			fielddisplay(self,'cycle_forcing','cycle through forcing ? (0 or 1)');
 			fielddisplay(self,'coupling_time',['length of coupling time step with ocean model  [' unit ']']);
 
@@ -67,4 +71,5 @@
 			WriteData(fid,prefix,'object',self,'fieldname','time_step','format','Double','scale',scale);
 			WriteData(fid,prefix,'object',self,'fieldname','interp_forcings','format','Boolean');
+			WriteData(fid,prefix,'object',self,'fieldname','cycle_forcing','format','Boolean');
 			WriteData(fid,prefix,'object',self,'fieldname','coupling_time','format','Double','scale',scale);
 		end % }}}
@@ -75,4 +80,5 @@
 			writejsdouble(fid,[modelname '.timestepping.time_step'],self.time_step);
 			writejsdouble(fid,[modelname '.timestepping.interp_forcings'],self.interp_forcings);
+			writejsdouble(fid,[modelname '.timestepping.cycle_forcing'],self.cycle_forcing);
 
 		end % }}}
Index: /issm/trunk-jpl/src/m/classes/timestepping.py
===================================================================
--- /issm/trunk-jpl/src/m/classes/timestepping.py	(revision 26194)
+++ /issm/trunk-jpl/src/m/classes/timestepping.py	(revision 26195)
@@ -17,4 +17,5 @@
         self.time_step = 0.
         self.interp_forcings = 1
+        self.cycle_forcing = 0
         self.coupling_time = 0.
 
@@ -30,4 +31,5 @@
         string = "%s\n%s" % (string, fielddisplay(self, "time_step", "length of time steps [yr]"))
         string = "%s\n%s" % (string, fielddisplay(self, "interp_forcings", "interpolate in time between requested forcing values ? (0 or 1)"))
+        string = "%s\n%s" % (string, fielddisplay(self, "cycle_forcing", "cycle through forcing ? (0 or 1)"))
         string = "%s\n%s" % (string, fielddisplay(self, "coupling_time", "length of coupling time steps with ocean model [yr]"))
         return string
@@ -41,4 +43,5 @@
         #should we interpolate forcings between timesteps?
         self.interp_forcings = 1
+        self.cycle_forcing = 0
 
         return self
@@ -54,4 +57,5 @@
             md = checkfield(md, 'fieldname', 'timestepping.coupling_time', 'numel', [1], '>=', 0, 'NaN', 1, 'Inf', 1)
         md = checkfield(md, 'fieldname', 'timestepping.interp_forcings', 'numel', [1], 'values', [0, 1])
+        md = checkfield(md, 'fieldname', 'timestepping.cycle_forcing', 'numel', [1], 'values', [0, 1])
 
         return md
@@ -66,4 +70,5 @@
         WriteData(fid, prefix, 'object', self, 'fieldname', 'time_step', 'format', 'Double', 'scale', yts)
         WriteData(fid, prefix, 'object', self, 'fieldname', 'interp_forcings', 'format', 'Boolean')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'cycle_forcing', 'format', 'Boolean')
         WriteData(fid, prefix, 'object', self, 'fieldname', 'coupling_time', 'format', 'Double', 'scale', yts)
     # }}}
Index: /issm/trunk-jpl/src/m/classes/timesteppingadaptive.js
===================================================================
--- /issm/trunk-jpl/src/m/classes/timesteppingadaptive.js	(revision 26194)
+++ /issm/trunk-jpl/src/m/classes/timesteppingadaptive.js	(revision 26195)
@@ -19,4 +19,5 @@
 		//should we interpolate forcings between timesteps?
 		this.interp_forcings=1;
+		this.cycle_forcing=0;
 	}// }}}
 	this.disp= function(){// {{{
@@ -31,4 +32,5 @@
 		fielddisplay(this,'cfl_coefficient','coefficient applied to cfl condition');
 		fielddisplay(this,'interp_forcings','interpolate in time between requested forcing values ? (0 or 1)');
+		fielddisplay(this,'cycle_forcing','cycle through forcing ? (0 or 1)');
 		fielddisplay(this,'coupling_time','coupling time steps with ocean model [' +unit+ ']');
 
@@ -46,4 +48,5 @@
 		checkfield(md,'fieldname','timestepping.cfl_coefficient','numel',[1],'>',0,'<=',1);
 		checkfield(md,'fieldname','timestepping.interp_forcings','numel',[1],'values',[0,1]);
+		checkfield(md,'fieldname','timestepping.cycle_forcing','numel',[1],'values',[0,1]);
 		if (this.final_time-this.start_time<0){
 			md.checkmessage('timestepping.final_time should be larger than timestepping.start_time');
@@ -63,4 +66,5 @@
 		WriteData(fid,prefix,'object',this,'class','timestepping','fieldname','cfl_coefficient','format','Double');
 		WriteData(fid,prefix,'object',this,'class','timestepping','fieldname','interp_forcings','format','Boolean');
+		WriteData(fid,prefix,'object',this,'class','timestepping','fieldname','cycle_forcing','format','Boolean');
 		WriteData(fid,prefix,'object',this,'class','timestepping','fieldname','coupling_time','format','Double','scale',scale);
 
@@ -76,4 +80,5 @@
 	this.cfl_coefficient = 0.;
 	this.interp_forcings = 1;
+	this.cycle_forcing   = 0;
 	this.coupling_time   = 0.;
 
Index: /issm/trunk-jpl/src/m/classes/timesteppingadaptive.m
===================================================================
--- /issm/trunk-jpl/src/m/classes/timesteppingadaptive.m	(revision 26194)
+++ /issm/trunk-jpl/src/m/classes/timesteppingadaptive.m	(revision 26195)
@@ -12,4 +12,5 @@
 		cfl_coefficient = 0.;
 		interp_forcings = 1;
+		cycle_forcing = 1;
 		coupling_time   = 0.;
 	end
@@ -39,4 +40,5 @@
 			%should we interpolate forcings between timesteps?
 			self.interp_forcings=1;
+			self.cycle_forcing=0;
 		end % }}}
 		function md = checkconsistency(self,md,solution,analyses) % {{{
@@ -48,4 +50,5 @@
 			md = checkfield(md,'fieldname','timestepping.cfl_coefficient','numel',[1],'>',0,'<=',1);
 			md = checkfield(md,'fieldname','timestepping.interp_forcings','numel',[1],'values',[0 1]);
+			md = checkfield(md,'fieldname','timestepping.cycle_forcing','numel',[1],'values',[0 1]);
 			md = checkfield(md,'fieldname','timestepping.coupling_time','numel',[1],'>=',md.timestepping.coupling_time,'NaN',1,'Inf',1);
 			if self.final_time-self.start_time<0,
@@ -63,4 +66,5 @@
 			fielddisplay(self,'cfl_coefficient','coefficient applied to cfl condition');
 			fielddisplay(self,'interp_forcings','interpolate in time between requested forcing values ? (0 or 1)');
+			fielddisplay(self,'cycle_forcing','cycle through forcing ? (0 or 1)');
 			fielddisplay(self,'coupling_time',['coupling time step with ocean model [' unit ']']);
 
@@ -76,4 +80,5 @@
 			WriteData(fid,prefix,'object',self,'class','timestepping','fieldname','cfl_coefficient','format','Double');
 			WriteData(fid,prefix,'object',self,'class','timestepping','fieldname','interp_forcings','format','Boolean');
+			WriteData(fid,prefix,'object',self,'class','timestepping','fieldname','cycle_forcing','format','Boolean');
 			WriteData(fid,prefix,'object',self,'class','timestepping','fieldname','coupling_time','format','Double','scale',scale);
 		end % }}}
@@ -86,4 +91,5 @@
 			writejsdouble(fid,[modelname '.timesteppingadaptive.cfl_coefficient'],self.cfl_coefficient);
 			writejsdouble(fid,[modelname '.timesteppingadaptive.interp_forcings'],self.interp_forcings);
+			writejsdouble(fid,[modelname '.timesteppingadaptive.cycle_forcing'],self.cycle_forcing);
 			writejsdouble(fid,[modelname '.timesteppingadaptive.coupling_time'],self.time_step_max);
 
Index: /issm/trunk-jpl/src/m/classes/timesteppingadaptive.py
===================================================================
--- /issm/trunk-jpl/src/m/classes/timesteppingadaptive.py	(revision 26194)
+++ /issm/trunk-jpl/src/m/classes/timesteppingadaptive.py	(revision 26195)
@@ -20,4 +20,5 @@
             self.cfl_coefficient = 0.
             self.interp_forcings = 1
+            self.cycle_forcing = 0
             self.coupling_time = 0.
 
@@ -32,4 +33,5 @@
             self.final_time = old.final_time
             self.interp_forcings = old.interp_forcings
+            self.cycle_forcing = old.cycle_forcing
             self.coupling_time = old.coupling_time
 
@@ -46,4 +48,5 @@
         string = "%s\n%s" % (string, fielddisplay(self, "cfl_coefficient", "coefficient applied to cfl condition"))
         string = "%s\n%s" % (string, fielddisplay(self, "interp_forcings", "interpolate in time between requested forcing values ? (0 or 1)"))
+        string = "%s\n%s" % (string, fielddisplay(self, "cycle_forcing", "cycle through forcing ? (0 or 1)"))
         string = "%s\n%s" % (string, fielddisplay(self, "coupling_time", "coupling time steps with ocean model [yr]"))
         return string
@@ -60,4 +63,5 @@
         #should we interpolate forcings between timesteps?
         self.interp_forcings = 1
+        self.cycle_forcing   = 0
         return self
     #}}}
@@ -72,4 +76,5 @@
             md.checkmessage("timestepping.final_time should be larger than timestepping.start_time")
         md = checkfield(md, 'fieldname', 'timestepping.interp_forcings', 'numel', [1], 'values', [0, 1])
+        md = checkfield(md, 'fieldname', 'timestepping.cycle_forcing', 'numel', [1], 'values', [0, 1])
         md = checkfield(md, 'fieldname', 'timestepping.coupling_time', 'numel', [1], '>=', 0, 'NaN', 1, 'Inf', 1)
 
@@ -86,4 +91,5 @@
         WriteData(fid, prefix, 'object', self, 'class', 'timestepping', 'fieldname', 'cfl_coefficient', 'format', 'Double')
         WriteData(fid, prefix, 'object', self, 'class', 'timestepping', 'fieldname', 'interp_forcings', 'format', 'Boolean')
+        WriteData(fid, prefix, 'object', self, 'class', 'timestepping', 'fieldname', 'cycle_forcing', 'format', 'Boolean')
         WriteData(fid, prefix, 'object', self, 'class', 'timestepping', 'fieldname', 'coupling_time', 'format', 'Double', 'scale', yts)
     # }}}
