Index: /issm/trunk-jpl/src/c/main/esmfbinders.cpp
===================================================================
--- /issm/trunk-jpl/src/c/main/esmfbinders.cpp	(revision 25825)
+++ /issm/trunk-jpl/src/c/main/esmfbinders.cpp	(revision 25826)
@@ -65,6 +65,6 @@
 			int forcing_type=GCMForcingTerms[f];
 
-			for(Object* & object : femmodel->elements->objects){
-				Element* element=dynamic_cast<Element*>(object);
+			for (int i=0;i<femmodel->elements->Size();i++){
+				Element* element=dynamic_cast<Element*>(femmodel->elements->GetObjectByOffset(i));
 
 				switch(forcing_type){
@@ -79,6 +79,5 @@
 
 						/*Recover smb forcing from the gcm forcings: */
-						_error_("not implemented yet, line below may not work");
-						IssmDouble smbforcing=gcmforcings[f*numberofelements+element->Sid()];
+						IssmDouble smbforcing=*(gcmforcings+f*numberofelements+i); 
 
 						/*Convert to SI. The smbforcing from GEOS-5 in kg/s, and we transform it into m/s: */
@@ -104,6 +103,6 @@
 			int output_type=ISSMOutputTerms[f];
 
-			for(Object* & object : femmodel->elements->objects){
-				Element* element=dynamic_cast<Element*>(object);
+			for (int i=0;i<femmodel->elements->Size();i++){
+				Element* element=dynamic_cast<Element*>(femmodel->elements->GetObjectByOffset(i));
 
 				switch(output_type){
@@ -117,5 +116,6 @@
 						Input* surface_input = element->GetInput(SurfaceEnum); _assert_(surface_input);
 						surface_input->GetInputAverage(&surface);
-						issmoutputs[f*numberofelements+element->Sid()] = surface;
+			
+						*(issmoutputs+f*numberofelements+i) = surface;
 
 						}
@@ -140,5 +140,5 @@
 
 		/*For the next time around, save the final time as start time */
-		femmodel->parameters->SetParam(final_time,TimeEnum);
+		femmodel->parameters->SetParam(final_time,TimesteppingStartTimeEnum);
 	} /*}}}*/
 	void FinalizeISSM(){ /*{{{*/
