diff --git a/build/makefile b/build/makefile
index a20a1c374c447b954135e75bc670be1fd8a9024d..d42c2ece7046c500fbf43bfb8507aa912240e0bb 100644
--- a/build/makefile
+++ b/build/makefile
@@ -14,12 +14,12 @@ ACTORS_LIBRARIES = -L/usr/lib -L/usr/local/lib -L/Summa-Actors/bin -lcaf_core -l
 
 
 # Production runs
-FLAGS_NOAH = -g -O3 -ffree-form -ffree-line-length-none -fmax-errors=0 -fPIC -Wfatal-errors
-FLAGS_COMM = -g -O3 -ffree-line-length-none -fmax-errors=0 -fPIC -Wfatal-errors
-FLAGS_SUMMA = -g -O3 -ffree-line-length-none -fmax-errors=0 -fPIC -Wfatal-errors
-FLAGS_ACTORS = -g -O3 -Wfatal-errors -std=c++17
+FLAGS_NOAH = -O3 -ffree-form -ffree-line-length-none -fmax-errors=0 -fPIC -Wfatal-errors
+FLAGS_COMM = -O3 -ffree-line-length-none -fmax-errors=0 -fPIC -Wfatal-errors
+FLAGS_SUMMA = -O3 -ffree-line-length-none -fmax-errors=0 -fPIC -Wfatal-errors
+FLAGS_ACTORS = -O3 -Wfatal-errors -std=c++17
 
-# # Debug runs
+# Debug runs
 # FLAGS_NOAH = -g -O0 -ffree-form -ffree-line-length-none -fmax-errors=0 -fbacktrace -Wno-unused -Wno-unused-dummy-argument -fPIC
 # FLAGS_COMM = -g -O0 -Wall -ffree-line-length-none -fmax-errors=0 -fbacktrace -fcheck=bounds -fPIC
 # FLAGS_SUMMA = -g -O0 -Wall -ffree-line-length-none -fmax-errors=0 -fbacktrace -fcheck=bounds -fPIC
diff --git a/build/source/netcdf/writeOutput.f90 b/build/source/netcdf/writeOutput.f90
index b863f85090055d4d97d241a9e71e2c352e00019c..31c2378086e08f8a675b077db1c618a39a903a25 100644
--- a/build/source/netcdf/writeOutput.f90
+++ b/build/source/netcdf/writeOutput.f90
@@ -248,7 +248,7 @@ subroutine writeData(ncid,outputTimestep,outputTimestepUpdate,maxLayers,nSteps,
         if(meta(iVar)%varType==iLookVarType%scalarv) then
           call writeScalar(ncid, outputTimeStep, outputTimeStepUpdate, nSteps, minGRU, maxGRU, numGRU, iFreq, iVar, meta, stat, map, err, message)
         else ! non-scalar variables: regular data structures
-          call writeVector(ncid, outputTimeStep, outputTimeStepUpdate, maxLayers, nSteps, minGRU, maxGRU, iFreq, iVar, meta, dat, &
+          call writeVector(ncid, outputTimeStep, outputTimeStepUpdate, maxLayers, nSteps, minGRU, maxGRU, numGRU, iFreq, iVar, meta, dat, &
             indx, err, message)
         end if ! not scalarv
 
@@ -319,7 +319,7 @@ subroutine writeScalar(ncid, outputTimestep, outputTimestepUpdate, nSteps, minGR
 end subroutine
 
 subroutine writeVector(ncid, outputTimestep, outputTimestepUpdate, maxLayers, nSteps, minGRU, maxGRU, &
-  iFreq, iVar, meta, dat, indx, err, message)
+  numGRU, iFreq, iVar, meta, dat, indx, err, message)
   USE data_types,only:var_info                       ! metadata type
   USE var_lookup,only:iLookIndex                     ! index into index structure
   USE var_lookup,only:iLookVarType                   ! index into type structure
@@ -332,6 +332,7 @@ subroutine writeVector(ncid, outputTimestep, outputTimestepUpdate, maxLayers, nS
   integer(i4b)  ,intent(in)             :: nSteps                  ! number of timeSteps
   integer(i4b)  ,intent(in)             :: minGRU                  ! minGRU index to write
   integer(i4b)  ,intent(in)             :: maxGRU                  ! maxGRU index to write - probably not needed
+  integer(i4b)  ,intent(in)             :: numGRU
   integer(i4b)  ,intent(in)             :: iFreq                   ! output file index (year, month, day, timesteps)
   integer(i4b)  ,intent(in)             :: iVar                    ! netcdf variable we are writing data for
   type(var_info),intent(in)             :: meta(:)                 ! meta data
@@ -354,9 +355,9 @@ subroutine writeVector(ncid, outputTimestep, outputTimestepUpdate, maxLayers, nS
   integer(i4b)                          :: dataType          ! type of data
   integer(i4b),parameter                :: ixInteger=1001    ! named variable for integer
   integer(i4b),parameter                :: ixReal=1002       ! named variable for real
-  real(rkind)                           :: realArray(nSteps,maxLayers+1)  ! real array for all HRUs in the run domain
-  integer(i4b)                          :: intArray(nSteps,maxLayers+1)   ! integer array for all HRUs in the run domain
-
+  real(rkind)                           :: realArray(numGRU,maxLayers+1)  ! real array for all HRUs in the run domain
+  integer(i4b)                          :: intArray(numGRU,maxLayers+1)   ! integer array for all HRUs in the run domain
+  err=0; message="writeOutput.f90-writeVector/"
 
   ! initialize the data vectors
   select type (dat)
@@ -366,10 +367,11 @@ subroutine writeVector(ncid, outputTimestep, outputTimestepUpdate, maxLayers, nS
   end select
 
   ! Loop over GRUs
-  gruCounter = 1
-  stepCounter = 0
-  do iGRU = minGRU, maxGRU
-    do iStep = 1, nSteps
+  
+  stepCounter = outputTimeStep(iFreq)
+  do iStep = 1, nSteps
+    gruCounter = 1
+    do iGRU = minGRU, maxGRU
       ! get the model layers
       nSoil   = indx%gru(iGRU)%hru(1)%var(iLookIndex%nSoil)%tim(iStep)%dat(1)
       nSnow   = indx%gru(iGRU)%hru(1)%var(iLookIndex%nSnow)%tim(iStep)%dat(1)
@@ -392,15 +394,15 @@ subroutine writeVector(ncid, outputTimestep, outputTimestepUpdate, maxLayers, nS
           class is (gru_hru_time_doubleVec)
             ! do iStep = 1, nSteps
               if(.not.outputStructure(1)%finalizeStats(1)%gru(iGRU)%hru(1)%tim(iStep)%dat(iFreq)) cycle
-              stepCounter = stepCounter + 1
-              realArray(stepCounter,1:datLength) = dat%gru(iGRU)%hru(1)%var(iVar)%tim(iStep)%dat(:)
+              ! stepCounter = stepCounter + 1
+              realArray(gruCounter,1:datLength) = dat%gru(iGRU)%hru(1)%var(iVar)%tim(iStep)%dat(:)
             ! end do
 
           class is (gru_hru_time_intVec)
             ! do iStep = 1, nSteps
               if(.not.outputStructure(1)%finalizeStats(1)%gru(iGRU)%hru(1)%tim(iStep)%dat(iFreq)) cycle
-              stepCounter = stepCounter + 1
-              intArray(stepCounter,1:datLength) = dat%gru(iGRU)%hru(1)%var(iVar)%tim(iStep)%dat(:)
+              ! stepCounter = stepCounter + 1
+              intArray(gruCounter,1:datLength) = dat%gru(iGRU)%hru(1)%var(iVar)%tim(iStep)%dat(:)
             ! end do
           class default; err=20; message=trim(message)//'data must not be scalarv and either of type gru_hru_doubleVec or gru_hru_intVec'; return
       end select
@@ -416,31 +418,29 @@ subroutine writeVector(ncid, outputTimestep, outputTimestepUpdate, maxLayers, nS
         case(iLookVarType%ifcSoil); maxLength = nSoil+1
         case default; cycle
       end select ! vartype
-
-      ! write the data vectors
-      select case(dataType)
-
-        case(ixReal)
-          err = nf90_put_var(ncid%var(iFreq),meta(iVar)%ncVarID(iFreq),realArray(1:stepCounter,:),start=(/iGRU,1,outputTimestep(iFreq)/),count=(/1,maxLength,stepCounter/))
-          if(err/=0)then; print*, "ERROR: with nf90_put_var in data vector (ixReal)"; return; endif
-
-        case(ixInteger)
-          err = nf90_put_var(ncid%var(iFreq),meta(iVar)%ncVarID(iFreq),intArray(1:stepCounter,:),start=(/iGRU,1,outputTimestep(iFreq)/),count=(/1,maxLength,stepCounter/))
-          if(err/=0)then; print*, "ERROR: with nf90_put_var in data vector (ixInteger)"; return; endif
-
-        case default; err=20; message=trim(message)//'data must be of type integer or real'; return
-      end select ! data type
-
-    end do ! isteps
-
-    if (outputTimeStepUpdate(iFreq) /= stepCounter ) then
-      print*, "ERROR Missmatch in Steps: for non scalar case"
-      print*, "   outputTimeStepUpdate(iFreq) = ", outputTimeStepUpdate(iFreq)
-      print*, "   stepCounter = ", stepCounter
-      return
-    endif
-
-  end do ! iGRU
+    end do ! iGRU
+
+   ! write the data vectors
+    select case(dataType)
+
+      case(ixReal)
+        err = nf90_put_var(ncid%var(iFreq),meta(iVar)%ncVarID(iFreq),realArray(1:numGRU,1:maxLength),start=(/minGRU,1,stepCounter/),count=(/numGRU,maxLength,1/))
+        if(err/=0)then; print*, "ERROR: with nf90_put_var in data vector (ixReal)"; return; endif
+
+      case(ixInteger)
+        err = nf90_put_var(ncid%var(iFreq),meta(iVar)%ncVarID(iFreq),intArray(1:numGRU,1:maxLength),start=(/minGRU,1,stepCounter/),count=(/numGRU,maxLength,1/))
+        if(err/=0)then; print*, "ERROR: with nf90_put_var in data vector (ixInteger)"; return; endif
+
+      case default; err=20; message=trim(message)//'data must be of type integer or real'; return
+    end select ! data type
+    stepCounter = stepCounter + 1
+  end do ! iStep
+  ! if (outputTimeStepUpdate(iFreq) /= stepCounter ) then
+  !   print*, "ERROR Missmatch in Steps: for non scalar case"
+  !   print*, "   outputTimeStepUpdate(iFreq) = ", outputTimeStepUpdate(iFreq)
+  !   print*, "   stepCounter = ", stepCounter
+  !   return
+  ! endif
 end subroutine
 
 ! **************************************************************************************
diff --git a/utils/laugh_tests/celia1990/output/runinfo.txt b/utils/laugh_tests/celia1990/output/runinfo.txt
index e1c21fd1637ffa0546d928114a976a3eae702d68..ed5a7d406c1c09ab9a76c84edd9a188108966b0d 100644
--- a/utils/laugh_tests/celia1990/output/runinfo.txt
+++ b/utils/laugh_tests/celia1990/output/runinfo.txt
@@ -1 +1 @@
- Run start time on system:  ccyy=2022 - mm=08 - dd=12 - hh=17 - mi=41 - ss=27.199
+ Run start time on system:  ccyy=2022 - mm=08 - dd=12 - hh=18 - mi=51 - ss=42.977
diff --git a/utils/laugh_tests/celia1990/output/summa-actors_celia1990GRU1-1_timestep.nc b/utils/laugh_tests/celia1990/output/summa-actors_celia1990GRU1-1_timestep.nc
index 940701e7598e884c1bc7b6535dad9c2bd377495e..636ec833bb76d6d8ea128d820dc5a64bf3e3dda1 100644
Binary files a/utils/laugh_tests/celia1990/output/summa-actors_celia1990GRU1-1_timestep.nc and b/utils/laugh_tests/celia1990/output/summa-actors_celia1990GRU1-1_timestep.nc differ