diff --git a/build/source/file_access_actor/def_output.f90 b/build/def_output.f90
similarity index 100%
rename from build/source/file_access_actor/def_output.f90
rename to build/def_output.f90
diff --git a/build/includes/job_actor/node_actor.hpp b/build/includes/job_actor/node_actor.hpp
index 6bfa7f7f9c4e16993c5464cb96826d9aaeb7a311..f097cb7a34b48e9d803a2f03fe408e2c0713457a 100644
--- a/build/includes/job_actor/node_actor.hpp
+++ b/build/includes/job_actor/node_actor.hpp
@@ -18,7 +18,7 @@ struct node_state {
   TimingInfo node_timing;
 
   int start_gru;
-  int num_gru;
+  int num_gru_local;
 
   caf::actor file_access_actor; // actor reference for the file_access_actor
   GRU_Container gru_container;
diff --git a/build/source/file_access_actor/cppwrap_fileAccess.f90 b/build/source/file_access_actor/cppwrap_fileAccess.f90
index b6aacef607f8ac05eb4dfcf321c4cf6898001ce4..59e5e464b8d09aea8e4c23367e17f88d8317a698 100644
--- a/build/source/file_access_actor/cppwrap_fileAccess.f90
+++ b/build/source/file_access_actor/cppwrap_fileAccess.f90
@@ -50,7 +50,6 @@ subroutine fileAccessActor_init_fortran(& ! Variables for forcing
   USE paramCheck_module,only:paramCheck                       ! module to check consistency of model parameters
   USE read_icond_module,only:read_icond                       ! module to read initial conditions
   USE check_icond_module,only:check_icond                     ! module to check initial conditions
-  ! USE def_output_module,only:def_output                       ! module to define model output
   USE globalData,only:localParFallback                        ! local column default parameters
   USE globalData,only:basinParFallback                        ! basin-average default parameters
   USE globalData,only:mpar_meta,bpar_meta                     ! parameter metadata structures
@@ -164,15 +163,16 @@ subroutine fileAccessActor_init_fortran(& ! Variables for forcing
   ! *** read Noah vegetation and soil tables
   ! *****************************************************************************
 
-  greenVegFrac_monthly = (/0.01_dp, 0.02_dp, 0.03_dp, 0.07_dp, 0.50_dp, 0.90_dp, 0.95_dp, 0.96_dp, 0.65_dp, 0.24_dp, 0.11_dp, 0.02_dp/)
+  greenVegFrac_monthly = (/0.01_dp, 0.02_dp, 0.03_dp, 0.07_dp, 0.50_dp, 0.90_dp,& 
+      0.95_dp, 0.96_dp, 0.65_dp, 0.24_dp, 0.11_dp, 0.02_dp/)
 
 
   ! read Noah soil and vegetation tables
   call soil_veg_gen_parm(trim(SETTINGS_PATH)//trim(VEGPARM),      & ! filename for vegetation table
-                         trim(SETTINGS_PATH)//trim(SOILPARM),                        & ! filename for soils table
-                         trim(SETTINGS_PATH)//trim(GENPARM),                         & ! filename for general table
-                         trim(model_decisions(iLookDECISIONS%vegeParTbl)%cDecision), & ! classification system used for vegetation
-                         trim(model_decisions(iLookDECISIONS%soilCatTbl)%cDecision))   ! classification system used for soils
+      trim(SETTINGS_PATH)//trim(SOILPARM), & ! filename for soils table
+      trim(SETTINGS_PATH)//trim(GENPARM),  & ! filename for general table
+      trim(model_decisions(iLookDECISIONS%vegeParTbl)%cDecision), & ! classification system used for vegetation
+      trim(model_decisions(iLookDECISIONS%soilCatTbl)%cDecision))   ! classification system used for soils
   if(err/=0)then; print*,trim(message); return; endif
 
   ! read Noah-MP vegetation tables
@@ -246,7 +246,7 @@ subroutine fileAccessActor_init_fortran(& ! Variables for forcing
   ! *****************************************************************************
   checkHRU = integerMissing
   call read_param(iRunMode,checkHRU,start_gru,num_hru,num_gru,outputStructure(1)%idStruct,&
-                  outputStructure(1)%mparStruct,outputStructure(1)%bparStruct,err,message)
+      outputStructure(1)%mparStruct,outputStructure(1)%bparStruct,err,message)
   if(err/=0)then; print*,trim(message); return; endif
 
   ! *****************************************************************************
diff --git a/build/source/file_access_actor/read_force.f90 b/build/source/file_access_actor/read_force.f90
index 5eecbeafc5de3ddfdf74e19f9d56d993dbb1ad6b..15f4f5c0d21117154daa8b42b6d085917af64965 100644
--- a/build/source/file_access_actor/read_force.f90
+++ b/build/source/file_access_actor/read_force.f90
@@ -31,119 +31,117 @@ type(dlength),allocatable,save,public          :: vecTime(:)
 
 contains
 subroutine read_forcingFile(handle_forcFileInfo, iFile, stepsInFile, startGRU, numGRU, err) bind(C,name="read_forcingFile")
-    USE netcdf                                              ! netcdf capability
-    USE netcdf_util_module,only:nc_file_open                ! open netcdf file
-    implicit none
-    type(c_ptr), intent(in), value          :: handle_forcFileInfo
-    integer(c_int),intent(in)               :: iFile
-    integer(c_int),intent(inout)            :: stepsInFile
-    integer(c_int),intent(in)               :: startGRU
-    integer(c_int),intent(in)               :: numGRU
-    integer(c_int),intent(inout)            :: err
-    ! local varibles            
-    type(file_info_array), pointer          :: forcFileInfo
-    integer(i4b)                            :: iHRU_Global
-    integer(i4b)                            :: varId
-    integer(i4b)                            :: ncid
-    integer(i4b)                            :: nFiles
-    integer(i4b)                            :: nTimeSteps
-    integer(i4b)                            :: numHRU
-    integer(i4b)                            :: nVars
-    integer(i4b)                            :: iVar
-    integer(i4b)                            :: iNC
-    integer(i4b)                            :: attLen             ! attribute length
-    character(len=256)                      :: infile
-    character(len=256)                      :: cmessage
-    character(len = nf90_max_name)          :: varName          ! dimenison name
-    logical(lgt),dimension(size(forc_meta)) :: checkForce       ! flags to check forcing data variables exist
-    character(len=256)                      :: message              ! error message 
-    
-    call c_f_pointer(handle_forcFileInfo, forcFileInfo)
+  USE netcdf                                              ! netcdf capability
+  USE netcdf_util_module,only:nc_file_open                ! open netcdf file
+  implicit none
+  type(c_ptr), intent(in), value          :: handle_forcFileInfo
+  integer(c_int),intent(in)               :: iFile
+  integer(c_int),intent(inout)            :: stepsInFile
+  integer(c_int),intent(in)               :: startGRU
+  integer(c_int),intent(in)               :: numGRU
+  integer(c_int),intent(inout)            :: err
+  ! local varibles            
+  type(file_info_array), pointer          :: forcFileInfo
+  integer(i4b)                            :: iHRU_Global
+  integer(i4b)                            :: varId
+  integer(i4b)                            :: ncid
+  integer(i4b)                            :: nFiles
+  integer(i4b)                            :: nTimeSteps
+  integer(i4b)                            :: numHRU
+  integer(i4b)                            :: nVars
+  integer(i4b)                            :: iVar
+  integer(i4b)                            :: iNC
+  integer(i4b)                            :: attLen           ! attribute length
+  character(len=256)                      :: infile
+  character(len=256)                      :: cmessage
+  character(len = nf90_max_name)          :: varName          ! dimenison name
+  logical(lgt),dimension(size(forc_meta)) :: checkForce       ! flags to check forcing data variables exist
+  character(len=256)                      :: message          ! error message 
+  
+  call c_f_pointer(handle_forcFileInfo, forcFileInfo)
+
+  ! Start Procedure here
+  err=0; message="read_force.f90 - read_forcingFile/"
+
+  nFiles=size(forcFileInfo%ffile_list(:))
+
+  nTimeSteps = sum(forcFileInfo%ffile_list(:)%nTimeSteps)
+
+  ! Allocate forcing data input Struct
+  if (.not.allocated(forcingDataStruct))then
+    allocate(forcingDataStruct(nFiles))
+    ! Allocate timing variables from forcing File
+    allocate(vecTime(nFiles))
+  endif
+ 
+  ! Files are assumed to be in the correct order
+  infile=trim(FORCING_PATH)//trim(forcFileInfo%ffile_list(iFile)%filenmData)
+  ! open netCDF file
+  call openForcingFile(forcFileInfo%ffile_list,iFile,trim(infile),ncid,err,cmessage)
+  if(err/=0)then; message=trim(message)//trim(cmessage);return; end if
+
+  err = nf90_inq_varid(ncid,'time',varId);                              if(err/=nf90_noerr)then; message=trim(message)//'cannot find time variable/'//trim(nf90_strerror(err)); return; endif
+  err = nf90_inquire_attribute(ncid,varId,'units',len = attLen);        if(err/=nf90_noerr)then; message=trim(message)//'cannot find time units/'//trim(nf90_strerror(err));    return; endif
+  err = nf90_get_att(ncid,varid,'units',forcingDataStruct(iFile)%refTimeString);if(err/=nf90_noerr)then; message=trim(message)//'cannot read time units/'//trim(nf90_strerror(err));    return; endif
+
+
+  nTimeSteps = forcFileInfo%ffile_list(iFile)%nTimeSteps
+  forcingDataStruct(iFile)%nTimeSteps = nTimeSteps
+  stepsInFile = nTimeSteps
+  if(.not.allocated(vecTime(iFile)%dat))then
+    allocate(vecTime(iFile)%dat(nTimeSteps))
+  end if
+
+  ! Get Time Information
+  err = nf90_inq_varid(ncid,'time',varId);
+  if(err/=nf90_noerr)then; message=trim(message)//'trouble finding time variable/'//trim(nf90_strerror(err)); return; endif
+  err = nf90_get_var(ncid,varId,vecTime(iFile)%dat(:),start=(/1/),count=(/nTimeSteps/))    
+  if(err/=nf90_noerr)then; message=trim(message)//'trouble reading time variable/'//trim(nf90_strerror(err)); return; endif
+
+  ! Need to loop through vars and add forcing data
+  nVars = forcFileInfo%ffile_list(iFile)%nVars
+  forcingDataStruct(iFile)%nVars = nVars
+  if (.not.allocated(forcingDataStruct(iFile)%var))then
+    allocate(forcingDataStruct(iFile)%var(nVars))
+  endif
+  if (.not.allocated(forcingDataStruct(iFile)%var_ix))then
+    allocate(forcingDataStruct(iFile)%var_ix(nVars))
+  endif
+  forcingDataStruct(iFile)%var_ix(:) = integerMissing
+
+  ! initialize flags for forcing data
+  checkForce(:) = .false.
+  checkForce(iLookFORCE%time) = .true.  ! time is handled separately
+  do iNC=1,nVars
+    ! populate var_ix so HRUs can access the values
+    forcingDataStruct(iFile)%var_ix(iNC) = forcFileInfo%ffile_list(iFile)%var_ix(iNC)
+
+    ! check variable is desired
+    if(forcFileInfo%ffile_list(iFile)%var_ix(iNC)==integerMissing) cycle
+          
+          
+    iVar = forcFileInfo%ffile_list(iFile)%var_ix(iNC)
+    checkForce(iVar) = .true.
+    if (.not.allocated(forcingDataStruct(iFile)%var(iVar)%dataFromFile))then
+      allocate(forcingDataStruct(iFile)%var(iVar)%dataFromFile(numGRU,nTimeSteps))
+    endif
 
-    ! Start Procedure here
-    err=0; message="read_force.f90 - read_forcingFile/"
-   
-    nFiles=size(forcFileInfo%ffile_list(:))
+    ! Get Forcing Data
+    ! get variable name for error reporting
+    err=nf90_inquire_variable(ncid,iNC,name=varName)
+    if(err/=nf90_noerr)then; message=trim(message)//'problem reading forcing variable name from netCDF: '//trim(nf90_strerror(err)); return; endif
+
+    ! define global HRU
+    iHRU_global = gru_struc(1)%hruInfo(1)%hru_nc
+    numHRU = sum(gru_struc(:)%hruCount)
     
-    nTimeSteps = sum(forcFileInfo%ffile_list(:)%nTimeSteps)
 
-    ! Allocate forcing data input Struct
-    if (.not.allocated(forcingDataStruct))then
-      allocate(forcingDataStruct(nFiles))
-      ! Allocate timing variables from forcing File
-      allocate(vecTime(nFiles))
-    endif
- 
-    ! Files are assumed to be in the correct order
-   infile=trim(FORCING_PATH)//trim(forcFileInfo%ffile_list(iFile)%filenmData)
-   ! open netCDF file
-   call openForcingFile(forcFileInfo%ffile_list,iFile,trim(infile),ncid,err,cmessage)
-   if(err/=0)then; message=trim(message)//trim(cmessage);return; end if
-
-   err = nf90_inq_varid(ncid,'time',varId);                              if(err/=nf90_noerr)then; message=trim(message)//'cannot find time variable/'//trim(nf90_strerror(err)); return; endif
-   err = nf90_inquire_attribute(ncid,varId,'units',len = attLen);        if(err/=nf90_noerr)then; message=trim(message)//'cannot find time units/'//trim(nf90_strerror(err));    return; endif
-   err = nf90_get_att(ncid,varid,'units',forcingDataStruct(iFile)%refTimeString);if(err/=nf90_noerr)then; message=trim(message)//'cannot read time units/'//trim(nf90_strerror(err));    return; endif
-
-
-   nTimeSteps = forcFileInfo%ffile_list(iFile)%nTimeSteps
-   forcingDataStruct(iFile)%nTimeSteps = nTimeSteps
-   stepsInFile = nTimeSteps
-   if(.not.allocated(vecTime(iFile)%dat))then
-      allocate(vecTime(iFile)%dat(nTimeSteps))
-   end if
-
-   ! Get Time Information
-   err = nf90_inq_varid(ncid,'time',varId);
-   if(err/=nf90_noerr)then; message=trim(message)//'trouble finding time variable/'//trim(nf90_strerror(err)); return; endif
-   err = nf90_get_var(ncid,varId,vecTime(iFile)%dat(:),start=(/1/),count=(/nTimeSteps/))    
-   if(err/=nf90_noerr)then; message=trim(message)//'trouble reading time variable/'//trim(nf90_strerror(err)); return; endif
-
-   ! Need to loop through vars and add forcing data
-   nVars = forcFileInfo%ffile_list(iFile)%nVars
-   forcingDataStruct(iFile)%nVars = nVars
-   if (.not.allocated(forcingDataStruct(iFile)%var))then
-      allocate(forcingDataStruct(iFile)%var(nVars))
-   endif
-   if (.not.allocated(forcingDataStruct(iFile)%var_ix))then
-      allocate(forcingDataStruct(iFile)%var_ix(nVars))
-   endif
-   forcingDataStruct(iFile)%var_ix(:) = integerMissing
-
-   ! initialize flags for forcing data
-   checkForce(:) = .false.
-   checkForce(iLookFORCE%time) = .true.  ! time is handled separately
-   do iNC=1,nVars
-      ! populate var_ix so HRUs can access the values
-      forcingDataStruct(iFile)%var_ix(iNC) = forcFileInfo%ffile_list(iFile)%var_ix(iNC)
-
-      ! check variable is desired
-      if(forcFileInfo%ffile_list(iFile)%var_ix(iNC)==integerMissing) cycle
-            
-            
-      iVar = forcFileInfo%ffile_list(iFile)%var_ix(iNC)
-      checkForce(iVar) = .true.
-      if (.not.allocated(forcingDataStruct(iFile)%var(iVar)%dataFromFile))then
-         allocate(forcingDataStruct(iFile)%var(iVar)%dataFromFile(numGRU,nTimeSteps))
-      endif
-
-      ! Get Forcing Data
-      ! get variable name for error reporting
-      err=nf90_inquire_variable(ncid,iNC,name=varName)
-      if(err/=nf90_noerr)then; message=trim(message)//'problem reading forcing variable name from netCDF: '//trim(nf90_strerror(err)); return; endif
-
-      ! define global HRU
-      iHRU_global = gru_struc(1)%hruInfo(1)%hru_nc
-      numHRU = sum(gru_struc(:)%hruCount)
-      
-
-      err=nf90_get_var(ncid,forcFileInfo%ffile_list(iFile)%data_id(ivar),forcingDataStruct(iFile)%var(iVar)%dataFromFile, start=(/startGRU,1/),count=(/numHRU, nTimeSteps/))
-      if(err/=nf90_noerr)then; message=trim(message)//'problem reading forcing data: '//trim(varName)//'/'//trim(nf90_strerror(err)); return; endif
-      
-
-   end do
-
-   call nc_file_close(ncid,err,message)
-   if(err/=0)then;message=trim(message)//trim(cmessage);return;end if
+    err=nf90_get_var(ncid,forcFileInfo%ffile_list(iFile)%data_id(ivar),forcingDataStruct(iFile)%var(iVar)%dataFromFile, start=(/startGRU,1/),count=(/numHRU, nTimeSteps/))
+    if(err/=nf90_noerr)then; message=trim(message)//'problem reading forcing data: '//trim(varName)//'/'//trim(nf90_strerror(err)); return; endif
+  end do
+
+  call nc_file_close(ncid,err,message)
+  if(err/=0)then;message=trim(message)//trim(cmessage);return;end if
 
        
 end subroutine read_forcingFile
@@ -152,84 +150,84 @@ end subroutine read_forcingFile
 ! * open the NetCDF forcing file and get the time information
 ! *************************************************************************
 subroutine openForcingFile(forcFileInfo,iFile,infile,ncId,err,message)
-    USE netcdf                                              ! netcdf capability
-    USE netcdf_util_module,only:nc_file_open                ! open netcdf file
-    USE time_utils_module,only:fracDay                      ! compute fractional day
-    USE time_utils_module,only:extractTime                  ! extract time info from units string
-    USE time_utils_module,only:compJulDay                   ! convert calendar date to julian day
-    !USE globalData,only:tmZoneOffsetFracDay                ! time zone offset in fractional days
-    USE globalData,only:ncTime                              ! time zone information from NetCDF file (timeOffset = longitude/15. - ncTimeOffset)
-    USE globalData,only:utcTime                             ! all times in UTC (timeOffset = longitude/15. hours)
-    USE globalData,only:localTime                           ! all times local (timeOffset = 0)
-    USE globalData,only:refJulDay_data
-    USE summafilemanager,only:NC_TIME_ZONE
-    ! dummy variables
-    type(file_info),intent(inout)     :: forcFileInfo(:)
-    integer(i4b),intent(in)           :: iFile              ! index of current forcing file in forcing file list
-    character(*) ,intent(in)          :: infile             ! input file
-    integer(i4b) ,intent(out)         :: ncId               ! NetCDF ID
-    integer(i4b) ,intent(out)         :: err                ! error code
-    character(*) ,intent(out)         :: message            ! error message
-    ! local variables
-    character(len=256)                :: cmessage           ! error message for downwind routine
-    integer(i4b)                      :: iyyy,im,id,ih,imin ! date
-    integer(i4b)                      :: ih_tz,imin_tz      ! time zone information
-    real(dp)                          :: dsec,dsec_tz       ! seconds
-    integer(i4b)                      :: varId              ! variable identifier
-    integer(i4b)                      :: mode               ! netcdf file mode
-    integer(i4b)                      :: attLen             ! attribute length
-    character(len=256)                :: refTimeString      ! reference time string
-   
-    ! initialize error control
-    err=0; message='openForcingFile/'
-   
-    ! open file
-    mode=nf90_NoWrite
-    call nc_file_open(trim(infile),mode,ncid,err,cmessage)
-    if(err/=0)then; message=trim(message)//trim(cmessage); return; end if
-   
-    ! get definition of time data
-    err = nf90_inq_varid(ncid,'time',varId);                       if(err/=nf90_noerr)then; message=trim(message)//'cannot find time variable/'//trim(nf90_strerror(err)); return; endif
-    err = nf90_inquire_attribute(ncid,varId,'units',len = attLen); if(err/=nf90_noerr)then; message=trim(message)//'cannot find time units/'//trim(nf90_strerror(err));    return; endif
-    err = nf90_get_att(ncid,varid,'units',refTimeString);          if(err/=nf90_noerr)then; message=trim(message)//'cannot read time units/'//trim(nf90_strerror(err));    return; endif
-   
-    ! define the reference time for the model simulation
-    call extractTime(refTimeString,                        & ! input  = units string for time data
-                    iyyy,im,id,ih,imin,dsec,               & ! output = year, month, day, hour, minute, second
-                    ih_tz, imin_tz, dsec_tz,               & ! output = time zone information (hour, minute, second)
-                    err,cmessage)                            ! output = error code and error message
-    if(err/=0)then; message=trim(message)//trim(cmessage); return; end if
+  USE netcdf                                              ! netcdf capability
+  USE netcdf_util_module,only:nc_file_open                ! open netcdf file
+  USE time_utils_module,only:fracDay                      ! compute fractional day
+  USE time_utils_module,only:extractTime                  ! extract time info from units string
+  USE time_utils_module,only:compJulDay                   ! convert calendar date to julian day
+  !USE globalData,only:tmZoneOffsetFracDay                ! time zone offset in fractional days
+  USE globalData,only:ncTime                              ! time zone information from NetCDF file (timeOffset = longitude/15. - ncTimeOffset)
+  USE globalData,only:utcTime                             ! all times in UTC (timeOffset = longitude/15. hours)
+  USE globalData,only:localTime                           ! all times local (timeOffset = 0)
+  USE globalData,only:refJulDay_data
+  USE summafilemanager,only:NC_TIME_ZONE
+  ! dummy variables
+  type(file_info),intent(inout)     :: forcFileInfo(:)
+  integer(i4b),intent(in)           :: iFile              ! index of current forcing file in forcing file list
+  character(*) ,intent(in)          :: infile             ! input file
+  integer(i4b) ,intent(out)         :: ncId               ! NetCDF ID
+  integer(i4b) ,intent(out)         :: err                ! error code
+  character(*) ,intent(out)         :: message            ! error message
+  ! local variables
+  character(len=256)                :: cmessage           ! error message for downwind routine
+  integer(i4b)                      :: iyyy,im,id,ih,imin ! date
+  integer(i4b)                      :: ih_tz,imin_tz      ! time zone information
+  real(dp)                          :: dsec,dsec_tz       ! seconds
+  integer(i4b)                      :: varId              ! variable identifier
+  integer(i4b)                      :: mode               ! netcdf file mode
+  integer(i4b)                      :: attLen             ! attribute length
+  character(len=256)                :: refTimeString      ! reference time string
    
-    select case(trim(NC_TIME_ZONE))
-     case('ncTime'); forcingDataStruct(iFile)%tmZoneOffsetFracDay = sign(1, ih_tz) * fracDay(ih_tz,   & ! time zone hour
-                                                            imin_tz, & ! time zone minute
-                                                            dsec_tz)                        ! time zone second
-     case('utcTime');   forcingDataStruct(iFile)%tmZoneOffsetFracDay = 0._dp
-     case('localTime'); forcingDataStruct(iFile)%tmZoneOffsetFracDay = 0._dp
-     case default; err=20; message=trim(message)//'unable to identify time zone info option'; return
-    end select ! (option time zone option)
+  ! initialize error control
+  err=0; message='openForcingFile/'
+  
+  ! open file
+  mode=nf90_NoWrite
+  call nc_file_open(trim(infile),mode,ncid,err,cmessage)
+  if(err/=0)then; message=trim(message)//trim(cmessage); return; end if
+  
+  ! get definition of time data
+  err = nf90_inq_varid(ncid,'time',varId);                       if(err/=nf90_noerr)then; message=trim(message)//'cannot find time variable/'//trim(nf90_strerror(err)); return; endif
+  err = nf90_inquire_attribute(ncid,varId,'units',len = attLen); if(err/=nf90_noerr)then; message=trim(message)//'cannot find time units/'//trim(nf90_strerror(err));    return; endif
+  err = nf90_get_att(ncid,varid,'units',refTimeString);          if(err/=nf90_noerr)then; message=trim(message)//'cannot read time units/'//trim(nf90_strerror(err));    return; endif
+  
+  ! define the reference time for the model simulation
+  call extractTime(refTimeString,                        & ! input  = units string for time data
+                  iyyy,im,id,ih,imin,dsec,               & ! output = year, month, day, hour, minute, second
+                  ih_tz, imin_tz, dsec_tz,               & ! output = time zone information (hour, minute, second)
+                  err,cmessage)                            ! output = error code and error message
+  if(err/=0)then; message=trim(message)//trim(cmessage); return; end if
    
-    call compjulday(iyyy,im,id,ih,imin,dsec,                & ! output = year, month, day, hour, minute, second
-                    refJulDay_data,err,cmessage)              ! output = julian day (fraction of day) + error control
-    if(err/=0)then; message=trim(message)//trim(cmessage); return; end if
+  select case(trim(NC_TIME_ZONE))
+    case('ncTime'); forcingDataStruct(iFile)%tmZoneOffsetFracDay = sign(1, ih_tz) * fracDay(ih_tz,   & ! time zone hour
+                                                          imin_tz, & ! time zone minute
+                                                          dsec_tz)                        ! time zone second
+    case('utcTime');   forcingDataStruct(iFile)%tmZoneOffsetFracDay = 0._dp
+    case('localTime'); forcingDataStruct(iFile)%tmZoneOffsetFracDay = 0._dp
+    case default; err=20; message=trim(message)//'unable to identify time zone info option'; return
+  end select ! (option time zone option)
    
-    ! get the time multiplier needed to convert time to units of days
-    select case( trim( refTimeString(1:index(refTimeString,' ')) ) )
-     case('seconds') 
-        forcFileInfo(iFile)%convTime2Days=86400._dp
-        forcingDataStruct(iFile)%convTime2Days=86400._dp
-     case('minutes') 
-        forcFileInfo(iFile)%convTime2Days=1440._dp
-        forcingDataStruct(iFile)%convTime2Days=1440._dp
-     case('hours')
-        forcFileInfo(iFile)%convTime2Days=24._dp
-        forcingDataStruct(iFile)%convTime2Days=24._dp
-     case('days')
-        forcFileInfo(iFile)%convTime2Days=1._dp
-        forcingDataStruct(iFile)%convTime2Days=1._dp
-     case default;    message=trim(message)//'unable to identify time units'; err=20; return
-    end select
+  call compjulday(iyyy,im,id,ih,imin,dsec,                & ! output = year, month, day, hour, minute, second
+                  refJulDay_data,err,cmessage)              ! output = julian day (fraction of day) + error control
+  if(err/=0)then; message=trim(message)//trim(cmessage); return; end if
+  
+  ! get the time multiplier needed to convert time to units of days
+  select case( trim( refTimeString(1:index(refTimeString,' ')) ) )
+    case('seconds') 
+      forcFileInfo(iFile)%convTime2Days=86400._dp
+      forcingDataStruct(iFile)%convTime2Days=86400._dp
+    case('minutes') 
+      forcFileInfo(iFile)%convTime2Days=1440._dp
+      forcingDataStruct(iFile)%convTime2Days=1440._dp
+    case('hours')
+      forcFileInfo(iFile)%convTime2Days=24._dp
+      forcingDataStruct(iFile)%convTime2Days=24._dp
+    case('days')
+      forcFileInfo(iFile)%convTime2Days=1._dp
+      forcingDataStruct(iFile)%convTime2Days=1._dp
+    case default;    message=trim(message)//'unable to identify time units'; err=20; return
+  end select
    
-   end subroutine openForcingFile
+  end subroutine openForcingFile
 
 end module access_forcing_module
\ No newline at end of file
diff --git a/build/source/job_actor/node_actor.cpp b/build/source/job_actor/node_actor.cpp
index 0cec05cc5111e9a95ab5fdf2a6f241bb95f508e8..39960ccab2ad726dbdf79f09d115cba106239cc8 100644
--- a/build/source/job_actor/node_actor.cpp
+++ b/build/source/job_actor/node_actor.cpp
@@ -50,19 +50,19 @@ behavior node_actor(stateful_actor<node_state>* self,
 
   
   return {
-    [=](start_job, int start_gru, int num_gru) {
+    [=](start_job, int start_gru, int num_gru_local) {
       aout(self) << "Recieved Start Job Message\n";
       aout(self) << "Start GRU: " << start_gru << " Num GRU: " 
-                 << num_gru << "\n";
+                 << num_gru_local << "\n";
       
       self->state.start_gru = start_gru;
-      self->state.num_gru = num_gru;
-      self->state.gru_container.num_gru_in_run_domain = num_gru;
+      self->state.num_gru_local = num_gru_local;
+      self->state.gru_container.num_gru_in_run_domain = num_gru_local;
       
       int err, file_gru;
       job_init_fortran(self->state.job_actor_settings.file_manager_path.c_str(),
-          &self->state.start_gru, &self->state.num_gru, &self->state.num_gru, 
-          &file_gru, &err);
+          &self->state.start_gru, &self->state.num_gru_local, 
+          &self->state.num_gru_local, &file_gru, &err);
       if (err != 0) { 
         aout(self) << "\nERROR: Job_Actor - job_init_fortran\n"; 
         self->quit();
@@ -70,7 +70,7 @@ behavior node_actor(stateful_actor<node_state>* self,
       }
       // Spawn the file_access_actor.
       self->state.file_access_actor = self->spawn(file_access_actor, 
-          self->state.start_gru, self->state.num_gru, 
+          self->state.start_gru, self->state.num_gru_local, 
           self->state.file_access_actor_settings, self);
       self->send(self->state.file_access_actor, def_output_v, file_gru);
     },
@@ -138,7 +138,7 @@ behavior node_actor(stateful_actor<node_state>* self,
     [=](write_output, int steps_to_write) {
       
       self->request(self->state.file_access_actor, infinite, write_output_v, 
-          steps_to_write, 1, self->state.num_gru).await(
+          steps_to_write, 1, self->state.num_gru_local).await(
           [=](int err) {
             if (err != 0) {
               aout(self) << "Error Writing Output\n";