Index: /issm/trunk-jpl/src/m/contrib/defleurian/netCDF/export_netCDF.m
===================================================================
--- /issm/trunk-jpl/src/m/contrib/defleurian/netCDF/export_netCDF.m	(revision 26857)
+++ /issm/trunk-jpl/src/m/contrib/defleurian/netCDF/export_netCDF.m	(revision 26858)
@@ -184,4 +184,8 @@
 							for l=1:Listsize
 								Var = md.(groups{i}).(fields{j})(l).(subfields{k});
+								if length(Var) == 0,
+									%Some variables only have data on the first step
+									break
+								end
 								lastindex=l;
 								StackedVar=StackedVar.update(Var);
@@ -191,5 +195,4 @@
 							end
 							StackedVar=StackedVar.finalize(lastindex);
-							%StackedVar=StackedVar';  %transposing to get time as first dimension
 							[DimSize,DimValue,varid]=CreateVar(ncid,StackedVar,subgroupID,subfields{k},DimSize,DimValue);
 							if ~isempty(varid),
@@ -428,7 +431,7 @@
 			elseif isa(Var{i},'double')
 				startpoint=[i-1];
-				count=[1 length(Var{i}) ndims(Var{i})]
+				count=[1 length(Var{i}) ndims(Var{i})];
 				for j=1:ndims(Var{i}),
-					startpoint=[startpoint 0]
+					startpoint=[startpoint 0];
 				end
 				netcdf.putVar(groupID,varid,startpoint,count,Var{i});
Index: /issm/trunk-jpl/src/m/contrib/defleurian/netCDF/export_netCDF.py
===================================================================
--- /issm/trunk-jpl/src/m/contrib/defleurian/netCDF/export_netCDF.py	(revision 26857)
+++ /issm/trunk-jpl/src/m/contrib/defleurian/netCDF/export_netCDF.py	(revision 26858)
@@ -311,5 +311,4 @@
         val_type = type(var)
 
-    print(val_type)
     # grab dimension
     if val_type in [collections.OrderedDict, dict]:
Index: /issm/trunk-jpl/src/m/contrib/defleurian/netCDF/restable.m
===================================================================
--- /issm/trunk-jpl/src/m/contrib/defleurian/netCDF/restable.m	(revision 26858)
+++ /issm/trunk-jpl/src/m/contrib/defleurian/netCDF/restable.m	(revision 26858)
@@ -0,0 +1,53 @@
+classdef restable
+	properties(SetAccess=public)
+		data=[];
+		sizes=[];
+	end
+	methods
+		function self = update(self, stepvar)
+			if length(stepvar) == 1
+				%if we have a scalar we just add it to the end
+				%we save the size of the current step for further treatment
+				self.sizes=[self.sizes;1];
+				self.data=[self.data;stepvar];
+			else
+				% if it is an array we add the values one by one
+				%we save the size of the current step for further treatment
+				self.sizes=[self.sizes;fliplr(size(stepvar))];
+				flatdata=reshape(stepvar, 1, []);
+				self.data=[self.data,flatdata];
+			end
+		end
+		function outdat = finalize(self, rows)
+			if length(self.data)>rows,
+				%we have more scalars than steps, so we have an array
+				maxsize=[];
+				for d=1:size(self.sizes,2)
+					maxsize=[maxsize,max(self.sizes(:,d))];
+				end
+				findim=[maxsize, rows];
+				%first check if all steps are the same size
+				SameSize = sum(self.sizes - self.sizes(1))==0;
+				if SameSize,
+					%same size for all steps, just reshape
+					outdat=reshape(self.data, findim);
+				else,
+					%different sizes at each steps, first create a table big enough for the biggest step
+					startpoint=1;
+					datadim=ndims(self.data);
+					outdat=NaN*ones(findim);
+					for r=1:rows
+						curlen = prod(self.sizes(r, :));
+						outdat(1:self.sizes(r,1), 1:self.sizes(r,2), r) = reshape(self.data(startpoint:startpoint+curlen-1),self.sizes(r,:));
+						startpoint = startpoint+curlen;
+					end
+
+				end
+			else,
+				%as much scalars as steps (or less) so just one value per step
+				outdat=self.data;
+
+			end
+		end
+	end
+end
