Index: /issm/trunk-jpl/src/c/cores/hydrology_core.cpp
===================================================================
--- /issm/trunk-jpl/src/c/cores/hydrology_core.cpp	(revision 16754)
+++ /issm/trunk-jpl/src/c/cores/hydrology_core.cpp	(revision 16755)
@@ -67,5 +67,5 @@
 			InputDuplicatex(femmodel,WatercolumnEnum,WaterColumnOldEnum);
 
-			if(save_results && ((i+1)%output_frequency==0 || (i+1)==nsteps)){
+			if(save_results && ((i+1)%output_frequency==0 || (i+1)==nsteps || i==0)){
 				if(VerboseSolution()) _printf0_("   saving results \n");
 				int outputs[3] = {WatercolumnEnum,HydrologyWaterVxEnum,HydrologyWaterVyEnum};
@@ -91,5 +91,5 @@
 			if(VerboseSolution()) _printf0_("   computing water head\n");
 			solutionsequence_hydro_nonlinear(femmodel);
-			if(save_results && ((i+1)%output_frequency==0 || (i+1)==nsteps)){
+			if(save_results && ((i+1)%output_frequency==0 || (i+1)==nsteps || i==0)){
 				if(VerboseSolution()) _printf0_("   saving results \n");
 				if(isefficientlayer){
Index: /issm/trunk-jpl/src/c/cores/transient_core.cpp
===================================================================
--- /issm/trunk-jpl/src/c/cores/transient_core.cpp	(revision 16754)
+++ /issm/trunk-jpl/src/c/cores/transient_core.cpp	(revision 16755)
@@ -106,5 +106,5 @@
 
 		if(VerboseSolution()) _printf0_("iteration " << step << "/" << floor((finaltime-time)/dt)+step << "  time [yr]: " << time/yts << " (time step: " << dt/yts << ")\n");
-		if(step%output_frequency==0 || time==finaltime)
+		if(step%output_frequency==0 || time==finaltime || step==1)
 		 save_results=true;
 		else
Index: /issm/trunk-jpl/src/m/solve/parseresultsfromdisk.m
===================================================================
--- /issm/trunk-jpl/src/m/solve/parseresultsfromdisk.m	(revision 16754)
+++ /issm/trunk-jpl/src/m/solve/parseresultsfromdisk.m	(revision 16755)
@@ -26,22 +26,30 @@
 
 %Read fields until the end of the file.
-result=ReadData(fid);
+result  = ReadData(fid);
+counter = 1;
+step    = result.step;
 while ~isempty(result), 
-	%Get time and step
-	results(result.step).step=result.step;
-	results(result.step).time=result.time; 
+
+	%Check step, increase counter if this is a new step
+	if(step~=result.step & result.step>1)
+		counter = counter + 1;
+		step    = result.step;
+	end
 
 	%Add result
-	if (length(results)>=result.step & isfield(results,result.fieldname) & ~strcmp(result.fieldname,'SolutionType')),
-			results(result.step).(result.fieldname)=[ results(result.step).(result.fieldname); result.field];
+	if(result.step==1),
+		index = 1;
 	else
-		results(result.step).(result.fieldname)=result.field;
-	end
+		index = counter;
+	end
+	results(index).step=result.step;
+	results(index).time=result.time; 
+	results(index).(result.fieldname)=result.field;
 
 	%read next result
 	try,
-		result=ReadData(fid);
+		result  = ReadData(fid);
 	catch me,
-		disp('WARNING: file corrupted, results partial recovery');
+		disp('WARNING: file corrupted, trying partial recovery');
 		result=[];
 	end
