diff --git a/src/mo_fortran_tools.F90 b/src/mo_fortran_tools.F90
index bffb618126cc3b02df516cafa4c9bd775d25adf3..c5ba60d77af205606497077d0ebff04ea16086c1 100644
--- a/src/mo_fortran_tools.F90
+++ b/src/mo_fortran_tools.F90
@@ -1659,12 +1659,12 @@ CONTAINS
     CALL acc_wait_if_requested(1, opt_acc_async)
   END SUBROUTINE negative2zero_4d_dp
 
-  SUBROUTINE init_contiguous_dp(var, n, v, opt_acc_async, lacc)
+  SUBROUTINE init_contiguous_dp(var, n, v, lacc, opt_acc_async)
     INTEGER, INTENT(IN) :: n
     REAL(dp), INTENT(OUT) :: var(n)
     REAL(dp), INTENT(IN) :: v
-    LOGICAL, INTENT(IN), OPTIONAL :: opt_acc_async
     LOGICAL, INTENT(IN), OPTIONAL :: lacc
+    LOGICAL, INTENT(IN), OPTIONAL :: opt_acc_async
 
     INTEGER :: i
     LOGICAL :: lzacc
@@ -1681,21 +1681,21 @@ CONTAINS
     CALL acc_wait_if_requested(1, opt_acc_async)
   END SUBROUTINE init_contiguous_dp
 
-  SUBROUTINE init_zero_contiguous_dp(var, n, opt_acc_async, lacc)
+  SUBROUTINE init_zero_contiguous_dp(var, n, lacc, opt_acc_async)
     INTEGER, INTENT(IN) :: n
     REAL(dp), INTENT(OUT) :: var(n)
-    LOGICAL, INTENT(IN), OPTIONAL :: opt_acc_async
     LOGICAL, INTENT(IN), OPTIONAL :: lacc
+    LOGICAL, INTENT(IN), OPTIONAL :: opt_acc_async
 
-    CALL init_contiguous_dp(var, n, 0.0_dp, opt_acc_async, lacc)
+    CALL init_contiguous_dp(var, n, 0.0_dp, lacc, opt_acc_async)
   END SUBROUTINE init_zero_contiguous_dp
 
-  SUBROUTINE init_contiguous_sp(var, n, v, opt_acc_async, lacc)
+  SUBROUTINE init_contiguous_sp(var, n, v, lacc, opt_acc_async)
     INTEGER, INTENT(IN) :: n
     REAL(sp), INTENT(OUT) :: var(n)
     REAL(sp), INTENT(IN) :: v
-    LOGICAL, INTENT(IN), OPTIONAL :: opt_acc_async
     LOGICAL, INTENT(IN), OPTIONAL :: lacc
+    LOGICAL, INTENT(IN), OPTIONAL :: opt_acc_async
 
     INTEGER :: i
     LOGICAL :: lzacc
@@ -1712,21 +1712,21 @@ CONTAINS
 
   END SUBROUTINE init_contiguous_sp
 
-  SUBROUTINE init_zero_contiguous_sp(var, n, opt_acc_async, lacc)
+  SUBROUTINE init_zero_contiguous_sp(var, n, lacc, opt_acc_async)
     INTEGER, INTENT(IN) :: n
     REAL(sp), INTENT(OUT) :: var(n)
-    LOGICAL, INTENT(IN), OPTIONAL :: opt_acc_async
     LOGICAL, INTENT(IN), OPTIONAL :: lacc
+    LOGICAL, INTENT(IN), OPTIONAL :: opt_acc_async
 
-    CALL init_contiguous_sp(var, n, 0.0_sp, opt_acc_async, lacc=lacc)
+    CALL init_contiguous_sp(var, n, 0.0_sp, lacc, opt_acc_async)
   END SUBROUTINE init_zero_contiguous_sp
 
-  SUBROUTINE init_contiguous_i4(var, n, v, opt_acc_async, lacc)
+  SUBROUTINE init_contiguous_i4(var, n, v, lacc, opt_acc_async)
     INTEGER, INTENT(IN) :: n
     INTEGER(ik4), INTENT(OUT) :: var(n)
     INTEGER(ik4), INTENT(IN) :: v
-    LOGICAL, INTENT(IN), OPTIONAL :: opt_acc_async
     LOGICAL, INTENT(IN), OPTIONAL :: lacc
+    LOGICAL, INTENT(IN), OPTIONAL :: opt_acc_async
 
     INTEGER :: i
     LOGICAL :: lzacc
@@ -1743,12 +1743,12 @@ CONTAINS
     CALL acc_wait_if_requested(1, opt_acc_async)
   END SUBROUTINE init_contiguous_i4
 
-  SUBROUTINE init_contiguous_l(var, n, v, opt_acc_async, lacc)
+  SUBROUTINE init_contiguous_l(var, n, v, lacc, opt_acc_async)
     INTEGER, INTENT(IN) :: n
     LOGICAL, INTENT(OUT) :: var(n)
     LOGICAL, INTENT(IN) :: v
-    LOGICAL, INTENT(IN), OPTIONAL :: opt_acc_async
     LOGICAL, INTENT(IN), OPTIONAL :: lacc
+    LOGICAL, INTENT(IN), OPTIONAL :: opt_acc_async
 
     INTEGER :: i
     LOGICAL :: lzacc
@@ -2325,8 +2325,10 @@ CONTAINS
     LOGICAL, INTENT(IN), OPTIONAL :: lacc
 
 #ifdef _OPENACC
-    IF (PRESENT(lacc) .AND. lacc) THEN
-      CALL finish(routine_name, ' not supported on ACC device.')
+    IF (PRESENT(lacc)) THEN
+      IF (lacc) THEN
+        CALL finish(routine_name, ' not supported on ACC device.')
+      END IF
     END IF
 #endif
   END SUBROUTINE assert_acc_host_only
@@ -2336,22 +2338,24 @@ CONTAINS
     LOGICAL, INTENT(IN), OPTIONAL :: lacc
 
 #ifdef _OPENACC
-    IF ((.NOT. PRESENT(lacc)) .OR. (.NOT. lacc)) THEN
-      CALL finish(routine_name, ' not supported on ACC host.')
+    IF ((.NOT. PRESENT(lacc))) THEN
+      CALL finish(routine_name, ' must not be called without lacc.')
+    ELSE
+      IF (.NOT. lacc) THEN
+        CALL finish(routine_name, ' not supported on ACC host.')
+      END IF
     END IF
 #endif
   END SUBROUTINE assert_acc_device_only
 
   SUBROUTINE assert_lacc_equals_i_am_accel_node(routine_name, lacc, i_am_accel_node)
     CHARACTER(len=*), INTENT(IN) :: routine_name
-    LOGICAL, INTENT(IN), OPTIONAL :: lacc
-    LOGICAL, INTENT(IN), OPTIONAL :: i_am_accel_node
+    LOGICAL, INTENT(IN) :: lacc
+    LOGICAL, INTENT(IN) :: i_am_accel_node
 
 #ifdef _OPENACC
-    IF (PRESENT(lacc) .AND. PRESENT(i_am_accel_node)) THEN
-      IF (lacc .NEQV. i_am_accel_node) THEN
-        CALL finish(routine_name, 'lacc /= i_am_accel_node')
-      END IF
+    IF (lacc .NEQV. i_am_accel_node) THEN
+      CALL finish(routine_name, 'lacc /= i_am_accel_node')
     END IF
 #endif
 
diff --git a/test/fortran/test_fortran_tools.f90 b/test/fortran/test_fortran_tools.f90
index 67b3c138be15238206f5ffa3c42925933a0cc931..a0512e0f721bab2ffb1be615f9f4824b6d634163 100644
--- a/test/fortran/test_fortran_tools.f90
+++ b/test/fortran/test_fortran_tools.f90
@@ -279,12 +279,12 @@ CONTAINS
     REAL(dp) :: src(10) = 1.0, dest(10)
 
     CALL TAG_TEST("Test_copy_1d_dp_ones")
-    CALL copy(src, dest)
+    CALL copy(src, dest, .FALSE.)
     CALL ASSERT_EQUAL(assert_real_array(src, dest), .TRUE.)
 
     CALL RANDOM_NUMBER(src)
     CALL TAG_TEST("Test_copy_1d_dp_random")
-    CALL copy(src, dest)
+    CALL copy(src, dest, .FALSE.)
     CALL ASSERT_EQUAL(assert_real_array(src, dest), .TRUE.)
   END SUBROUTINE
 
@@ -292,12 +292,12 @@ CONTAINS
     REAL(dp) :: src(10, 10) = 1.0, dest(10, 10)
 
     CALL TAG_TEST("Test_copy_2d_dp_ones")
-    CALL copy(src, dest)
+    CALL copy(src, dest, .FALSE.)
     CALL ASSERT_EQUAL(assert_real_2d_array(src, dest), .TRUE.)
 
     CALL RANDOM_NUMBER(src)
     CALL TAG_TEST("Test_copy_2d_dp_random")
-    CALL copy(src, dest)
+    CALL copy(src, dest, .FALSE.)
     CALL ASSERT_EQUAL(assert_real_2d_array(src, dest), .TRUE.)
   END SUBROUTINE
 
@@ -305,12 +305,12 @@ CONTAINS
     REAL(dp) :: src(10, 10, 10) = 1.0, dest(10, 10, 10)
 
     CALL TAG_TEST("Test_copy_3d_dp_ones")
-    CALL copy(src, dest)
+    CALL copy(src, dest, .FALSE.)
     CALL ASSERT_EQUAL(assert_real_3d_array(src, dest), .TRUE.)
 
     CALL RANDOM_NUMBER(src)
     CALL TAG_TEST("Test_copy_3d_dp_random")
-    CALL copy(src, dest)
+    CALL copy(src, dest, .FALSE.)
     CALL ASSERT_EQUAL(assert_real_3d_array(src, dest), .TRUE.)
   END SUBROUTINE
 
@@ -318,12 +318,12 @@ CONTAINS
     REAL(dp) :: src(5, 5, 5, 5) = 1.0, dest(5, 5, 5, 5)
 
     CALL TAG_TEST("Test_copy_4d_dp_ones")
-    CALL copy(src, dest)
+    CALL copy(src, dest, .FALSE.)
     CALL ASSERT_EQUAL(assert_real_4d_array(src, dest), .TRUE.)
 
     CALL RANDOM_NUMBER(src)
     CALL TAG_TEST("Test_copy_4d_dp_random")
-    CALL copy(src, dest)
+    CALL copy(src, dest, .FALSE.)
     CALL ASSERT_EQUAL(assert_real_4d_array(src, dest), .TRUE.)
   END SUBROUTINE
 
@@ -331,12 +331,12 @@ CONTAINS
     REAL(dp) :: src(5, 5, 5, 5, 5) = 1.0, dest(5, 5, 5, 5, 5)
 
     CALL TAG_TEST("Test_copy_5d_dp_ones")
-    CALL copy(src, dest)
+    CALL copy(src, dest, .FALSE.)
     CALL ASSERT_EQUAL(assert_real_5d_array(src, dest), .TRUE.)
 
     CALL RANDOM_NUMBER(src)
     CALL TAG_TEST("Test_copy_5d_dp_random")
-    CALL copy(src, dest)
+    CALL copy(src, dest, .FALSE.)
     CALL ASSERT_EQUAL(assert_real_5d_array(src, dest), .TRUE.)
   END SUBROUTINE
 
@@ -344,12 +344,12 @@ CONTAINS
     REAL(sp) :: src(5, 5, 5, 5, 5) = 1.0, dest(5, 5, 5, 5, 5)
 
     CALL TAG_TEST("Test_copy_5d_sp_ones")
-    CALL copy(src, dest)
+    CALL copy(src, dest, .FALSE.)
     CALL ASSERT_EQUAL(assert_real_sp_5d_array(src, dest), .TRUE.)
 
     CALL RANDOM_NUMBER(src)
     CALL TAG_TEST("Test_copy_5d_sp_random")
-    CALL copy(src, dest)
+    CALL copy(src, dest, .FALSE.)
     CALL ASSERT_EQUAL(assert_real_sp_5d_array(src, dest), .TRUE.)
   END SUBROUTINE
 
@@ -358,12 +358,12 @@ CONTAINS
     REAL(dp) :: dest(10, 10)
 
     CALL TAG_TEST("Test_copy_2d_spdp_ones")
-    CALL copy(src, dest)
+    CALL copy(src, dest, .FALSE.)
     CALL ASSERT_EQUAL(assert_real_spdp_2d_array(src, dest), .TRUE.)
 
     CALL RANDOM_NUMBER(src)
     CALL TAG_TEST("Test_copy_2d_spdp_random")
-    CALL copy(src, dest)
+    CALL copy(src, dest, .FALSE.)
     CALL ASSERT_EQUAL(assert_real_spdp_2d_array(src, dest), .TRUE.)
   END SUBROUTINE
 
@@ -372,12 +372,12 @@ CONTAINS
     REAL(dp) :: dest(10, 10, 10)
 
     CALL TAG_TEST("Test_copy_3d_spdp_ones")
-    CALL copy(src, dest)
+    CALL copy(src, dest, .FALSE.)
     CALL ASSERT_EQUAL(assert_real_spdp_3d_array(src, dest), .TRUE.)
 
     CALL RANDOM_NUMBER(src)
     CALL TAG_TEST("Test_copy_3d_spdp_random")
-    CALL copy(src, dest)
+    CALL copy(src, dest, .FALSE.)
     CALL ASSERT_EQUAL(assert_real_spdp_3d_array(src, dest), .TRUE.)
   END SUBROUTINE
 
@@ -386,12 +386,12 @@ CONTAINS
     REAL(dp) :: dest(5, 5, 5, 5)
 
     CALL TAG_TEST("Test_copy_4d_spdp_ones")
-    CALL copy(src, dest)
+    CALL copy(src, dest, .FALSE.)
     CALL ASSERT_EQUAL(assert_real_spdp_4d_array(src, dest), .TRUE.)
 
     CALL RANDOM_NUMBER(src)
     CALL TAG_TEST("Test_copy_4d_spdp_random")
-    CALL copy(src, dest)
+    CALL copy(src, dest, .FALSE.)
     CALL ASSERT_EQUAL(assert_real_spdp_4d_array(src, dest), .TRUE.)
   END SUBROUTINE
 
@@ -400,12 +400,12 @@ CONTAINS
     REAL(dp) :: dest(5, 5, 5, 5, 5)
 
     CALL TAG_TEST("Test_copy_5d_spdp_ones")
-    CALL copy(src, dest)
+    CALL copy(src, dest, .FALSE.)
     CALL ASSERT_EQUAL(assert_real_spdp_5d_array(src, dest), .TRUE.)
 
     CALL RANDOM_NUMBER(src)
     CALL TAG_TEST("Test_copy_5d_spdp_random")
-    CALL copy(src, dest)
+    CALL copy(src, dest, .FALSE.)
     CALL ASSERT_EQUAL(assert_real_spdp_5d_array(src, dest), .TRUE.)
   END SUBROUTINE
 
@@ -414,13 +414,13 @@ CONTAINS
     REAL(sp) :: rand(10, 10)
 
     CALL TAG_TEST("Test_copy_2d_i4_ones")
-    CALL copy(src, dest)
+    CALL copy(src, dest, .FALSE.)
     CALL ASSERT_EQUAL(assert_integer_2d_array(src, dest), .TRUE.)
 
     CALL RANDOM_NUMBER(rand)
     src = 1 + FLOOR(100*rand)
     CALL TAG_TEST("Test_copy_2d_i4_random")
-    CALL copy(src, dest)
+    CALL copy(src, dest, .FALSE.)
     CALL ASSERT_EQUAL(assert_integer_2d_array(src, dest), .TRUE.)
   END SUBROUTINE
 
@@ -429,13 +429,13 @@ CONTAINS
     REAL(sp) :: rand(10, 10, 10)
 
     CALL TAG_TEST("Test_copy_3d_i4_ones")
-    CALL copy(src, dest)
+    CALL copy(src, dest, .FALSE.)
     CALL ASSERT_EQUAL(assert_integer_3d_array(src, dest), .TRUE.)
 
     CALL RANDOM_NUMBER(rand)
     src = 1 + FLOOR(100*rand)
     CALL TAG_TEST("Test_copy_3d_i4_random")
-    CALL copy(src, dest)
+    CALL copy(src, dest, .FALSE.)
     CALL ASSERT_EQUAL(assert_integer_3d_array(src, dest), .TRUE.)
   END SUBROUTINE
 
@@ -444,13 +444,13 @@ CONTAINS
     REAL(sp) :: rand(5, 5, 5, 5, 5)
 
     CALL TAG_TEST("Test_copy_5d_i4_ones")
-    CALL copy(src, dest)
+    CALL copy(src, dest, .FALSE.)
     CALL ASSERT_EQUAL(assert_integer_5d_array(src, dest), .TRUE.)
 
     CALL RANDOM_NUMBER(rand)
     src = 1 + FLOOR(100*rand)
     CALL TAG_TEST("Test_copy_5d_i4_random")
-    CALL copy(src, dest)
+    CALL copy(src, dest, .FALSE.)
     CALL ASSERT_EQUAL(assert_integer_5d_array(src, dest), .TRUE.)
   END SUBROUTINE
 
@@ -459,13 +459,13 @@ CONTAINS
     REAL(sp) :: rand(5, 5, 5, 5, 5)
 
     CALL TAG_TEST("Test_copy_5d_l_trues")
-    CALL copy(src, dest)
+    CALL copy(src, dest, .FALSE.)
     CALL ASSERT_EQUAL(assert_logical_5d_array(src, dest), .TRUE.)
 
     CALL RANDOM_NUMBER(rand)
     src = rand < 0.5
     CALL TAG_TEST("Test_copy_5d_l_random")
-    CALL copy(src, dest)
+    CALL copy(src, dest, .FALSE.)
     CALL ASSERT_EQUAL(assert_logical_5d_array(src, dest), .TRUE.)
   END SUBROUTINE
 
@@ -473,7 +473,7 @@ CONTAINS
     REAL(dp) :: arr(10), zeros(10) = 0.0
 
     CALL TAG_TEST("Test_init_zero_1d_dp")
-    CALL init(arr)
+    CALL init(arr, .FALSE.)
     CALL ASSERT_EQUAL(assert_real_array(arr, zeros), .TRUE.)
   END SUBROUTINE
 
@@ -481,7 +481,7 @@ CONTAINS
     REAL(sp) :: arr(10), zeros(10) = 0.0
 
     CALL TAG_TEST("Test_init_zero_1d_sp")
-    CALL init(arr)
+    CALL init(arr, .FALSE.)
     CALL ASSERT_EQUAL(assert_real_sp_array(arr, zeros), .TRUE.)
   END SUBROUTINE
 
@@ -489,7 +489,7 @@ CONTAINS
     REAL(dp) :: arr(10, 10), zeros(10, 10) = 0.0
 
     CALL TAG_TEST("Test_init_zero_2d_dp")
-    CALL init(arr)
+    CALL init(arr, .FALSE.)
     CALL ASSERT_EQUAL(assert_real_2d_array(arr, zeros), .TRUE.)
   END SUBROUTINE
 
@@ -497,7 +497,7 @@ CONTAINS
     INTEGER(i4) :: arr(10, 10), zeros(10, 10) = 0
 
     CALL TAG_TEST("Test_init_zero_2d_i4")
-    CALL init(arr)
+    CALL init(arr, .FALSE.)
     CALL ASSERT_EQUAL(assert_integer_2d_array(arr, zeros), .TRUE.)
   END SUBROUTINE
 
@@ -505,7 +505,7 @@ CONTAINS
     REAL(dp) :: arr(10, 10, 10), zeros(10, 10, 10) = 0.0
 
     CALL TAG_TEST("Test_init_zero_3d_dp")
-    CALL init(arr)
+    CALL init(arr, .FALSE.)
     CALL ASSERT_EQUAL(assert_real_3d_array(arr, zeros), .TRUE.)
   END SUBROUTINE
 
@@ -513,7 +513,7 @@ CONTAINS
     REAL(sp) :: arr(10, 10, 10), zeros(10, 10, 10) = 0.0
 
     CALL TAG_TEST("Test_init_zero_3d_sp")
-    CALL init(arr)
+    CALL init(arr, .FALSE.)
     CALL ASSERT_EQUAL(assert_real_sp_3d_array(arr, zeros), .TRUE.)
   END SUBROUTINE
 
@@ -521,7 +521,7 @@ CONTAINS
     INTEGER(i4) :: arr(10, 10, 10), zeros(10, 10, 10) = 0
 
     CALL TAG_TEST("Test_init_zero_3d_i4")
-    CALL init(arr)
+    CALL init(arr, .FALSE.)
     CALL ASSERT_EQUAL(assert_integer_3d_array(arr, zeros), .TRUE.)
   END SUBROUTINE
 
@@ -529,7 +529,7 @@ CONTAINS
     REAL(dp) :: arr(5, 5, 5, 5), zeros(5, 5, 5, 5) = 0.0
 
     CALL TAG_TEST("Test_init_zero_4d_dp")
-    CALL init(arr)
+    CALL init(arr, .FALSE.)
     CALL ASSERT_EQUAL(assert_real_4d_array(arr, zeros), .TRUE.)
   END SUBROUTINE
 
@@ -537,7 +537,7 @@ CONTAINS
     REAL(sp) :: arr(5, 5, 5, 5), zeros(5, 5, 5, 5) = 0.0
 
     CALL TAG_TEST("Test_init_zero_4d_sp")
-    CALL init(arr)
+    CALL init(arr, .FALSE.)
     CALL ASSERT_EQUAL(assert_real_sp_4d_array(arr, zeros), .TRUE.)
   END SUBROUTINE
 
@@ -545,7 +545,7 @@ CONTAINS
     INTEGER(i4) :: arr(5, 5, 5, 5), zeros(5, 5, 5, 5) = 0
 
     CALL TAG_TEST("Test_init_zero_4d_i4")
-    CALL init(arr)
+    CALL init(arr, .FALSE.)
     CALL ASSERT_EQUAL(assert_integer_4d_array(arr, zeros), .TRUE.)
   END SUBROUTINE
 
@@ -553,7 +553,7 @@ CONTAINS
     REAL(dp) :: arr(10), ones(10) = 1.0
 
     CALL TAG_TEST("Test_init_1d_dp")
-    CALL init(arr, 1.0_dp)
+    CALL init(arr, 1.0_dp, .FALSE.)
     CALL ASSERT_EQUAL(assert_real_array(arr, ones), .TRUE.)
   END SUBROUTINE
 
@@ -561,7 +561,7 @@ CONTAINS
     REAL(dp) :: arr(10, 10), ones(10, 10) = 1.0
 
     CALL TAG_TEST("Test_init_2d_dp")
-    CALL init(arr, 1.0_dp)
+    CALL init(arr, 1.0_dp, .FALSE.)
     CALL ASSERT_EQUAL(assert_real_2d_array(arr, ones), .TRUE.)
   END SUBROUTINE
 
@@ -569,7 +569,7 @@ CONTAINS
     REAL(dp) :: arr(10, 10, 10), ones(10, 10, 10) = 1.0
 
     CALL TAG_TEST("Test_init_3d_dp")
-    CALL init(arr, 1.0_dp)
+    CALL init(arr, 1.0_dp, .FALSE.)
     CALL ASSERT_EQUAL(assert_real_3d_array(arr, ones), .TRUE.)
   END SUBROUTINE
 
@@ -578,7 +578,7 @@ CONTAINS
     REAL(dp) :: ones(10, 10, 10) = 1.0
 
     CALL TAG_TEST("Test_init_3d_spdp")
-    CALL init(arr, 1.0_dp)
+    CALL init(arr, 1.0_dp, .FALSE.)
     CALL ASSERT_EQUAL(assert_real_spdp_3d_array(arr, ones), .TRUE.)
   END SUBROUTINE
 
@@ -586,7 +586,7 @@ CONTAINS
     REAL(dp) :: arr(5, 5, 5, 5, 5), ones(5, 5, 5, 5, 5) = 1.0
 
     CALL TAG_TEST("Test_init_5d_dp")
-    CALL init(arr, 1.0_dp)
+    CALL init(arr, 1.0_dp, .FALSE.)
     CALL ASSERT_EQUAL(assert_real_5d_array(arr, ones), .TRUE.)
   END SUBROUTINE
 
@@ -594,7 +594,7 @@ CONTAINS
     REAL(sp) :: arr(5, 5, 5, 5, 5), ones(5, 5, 5, 5, 5) = 1.0
 
     CALL TAG_TEST("Test_init_5d_sp")
-    CALL init(arr, 1.0)
+    CALL init(arr, 1.0, .FALSE.)
     CALL ASSERT_EQUAL(assert_real_sp_5d_array(arr, ones), .TRUE.)
   END SUBROUTINE
 
@@ -602,7 +602,7 @@ CONTAINS
     INTEGER(i4) :: arr(5, 5, 5, 5, 5), ones(5, 5, 5, 5, 5) = 1
 
     CALL TAG_TEST("Test_init_5d_i4")
-    CALL init(arr, 1)
+    CALL init(arr, 1, .FALSE.)
     CALL ASSERT_EQUAL(assert_integer_5d_array(arr, ones), .TRUE.)
   END SUBROUTINE
 
@@ -610,7 +610,7 @@ CONTAINS
     LOGICAL :: arr(5, 5, 5, 5, 5), trues(5, 5, 5, 5, 5) = .TRUE.
 
     CALL TAG_TEST("Test_init_5d_l")
-    CALL init(arr, .TRUE.)
+    CALL init(arr, .TRUE., .FALSE.)
     CALL ASSERT_EQUAL(assert_logical_5d_array(arr, trues), .TRUE.)
   END SUBROUTINE
 
@@ -619,7 +619,7 @@ CONTAINS
     REAL(dp) :: ans(10, 10, 10) = 5.0
 
     CALL TAG_TEST("Test_var_scale_3d")
-    CALL var_scale(arr, scale)
+    CALL var_scale(arr, scale, .FALSE.)
     CALL ASSERT_EQUAL(assert_real_3d_array(arr, ans), .TRUE.)
   END SUBROUTINE
 
@@ -628,7 +628,7 @@ CONTAINS
     REAL(dp) :: ans(10, 10, 10) = 5.0
 
     CALL TAG_TEST("Test_var_addc_3d_dp")
-    CALL var_add(arr, const)
+    CALL var_add(arr, const, .FALSE.)
     CALL ASSERT_EQUAL(assert_real_3d_array(arr, ans), .TRUE.)
   END SUBROUTINE
 
@@ -653,7 +653,7 @@ CONTAINS
     END DO
 
     CALL TAG_TEST("Test_negative2zero_4d_dp")
-    CALL negative2zero(arr)
+    CALL negative2zero(arr, .FALSE.)
     CALL ASSERT_EQUAL(assert_real_4d_array(arr, ans), .TRUE.)
   END SUBROUTINE
 
@@ -661,7 +661,7 @@ CONTAINS
     REAL(dp) :: arr(10), ans(10) = 7.0
 
     CALL TAG_TEST("Test_init_contiguous_dp")
-    CALL init_contiguous_dp(arr, 10, 7.0_dp)
+    CALL init_contiguous_dp(arr, 10, 7.0_dp, .FALSE.)
     CALL ASSERT_EQUAL(assert_real_array(arr, ans), .TRUE.)
   END SUBROUTINE
 
@@ -669,7 +669,7 @@ CONTAINS
     REAL(sp) :: arr(10), ans(10) = 7.0
 
     CALL TAG_TEST("Test_init_contiguous_sp")
-    CALL init_contiguous_sp(arr, 10, 7.0)
+    CALL init_contiguous_sp(arr, 10, 7.0, .FALSE.)
     CALL ASSERT_EQUAL(assert_real_sp_array(arr, ans), .TRUE.)
   END SUBROUTINE
 
@@ -677,7 +677,7 @@ CONTAINS
     REAL(dp) :: arr(10), zeros(10) = 0.0
 
     CALL TAG_TEST("Test_init_zero_contiguous_dp")
-    CALL init_zero_contiguous_dp(arr, 10)
+    CALL init_zero_contiguous_dp(arr, 10, .FALSE.)
     CALL ASSERT_EQUAL(assert_real_array(arr, zeros), .TRUE.)
   END SUBROUTINE
 
@@ -685,7 +685,7 @@ CONTAINS
     REAL(sp) :: arr(10), zeros(10) = 0.0
 
     CALL TAG_TEST("Test_init_zero_contiguous_sp")
-    CALL init_zero_contiguous_sp(arr, 10)
+    CALL init_zero_contiguous_sp(arr, 10, .FALSE.)
     CALL ASSERT_EQUAL(assert_real_sp_array(arr, zeros), .TRUE.)
   END SUBROUTINE
 
@@ -693,7 +693,7 @@ CONTAINS
     INTEGER(i4) :: arr(10), ans(10) = 7
 
     CALL TAG_TEST("Test_init_contiguous_i4")
-    CALL init_contiguous_i4(arr, 10, 7)
+    CALL init_contiguous_i4(arr, 10, 7, .FALSE.)
     CALL ASSERT_EQUAL(assert_integer_array(arr, ans), .TRUE.)
   END SUBROUTINE
 
@@ -701,7 +701,7 @@ CONTAINS
     LOGICAL :: arr(10), ans(10) = .TRUE.
 
     CALL TAG_TEST("Test_init_contiguous_l")
-    CALL init_contiguous_l(arr, 10, .TRUE.)
+    CALL init_contiguous_l(arr, 10, .TRUE., .FALSE.)
     CALL ASSERT_EQUAL(assert_logical_array(arr, ans), .TRUE.)
   END SUBROUTINE
 
@@ -713,7 +713,7 @@ CONTAINS
     ! Make arr an array of numbers between 1 and 100
     arr = 1 + FLOOR(100*rand)
     CALL TAG_TEST("Test_minval_1d")
-    min = minval_1d(arr)
+    min = minval_1d(arr, .FALSE.)
     CALL ASSERT_EQUAL(min, MINVAL(arr(:)))
   END SUBROUTINE
 
@@ -725,7 +725,7 @@ CONTAINS
     ! Make arr an array of numbers between 1 and 100
     arr = 1 + FLOOR(100*rand)
     CALL TAG_TEST("Test_minval_2d")
-    min = minval_2d(arr)
+    min = minval_2d(arr, .FALSE.)
     CALL ASSERT_EQUAL(min, MINVAL(arr(:, :)))
   END SUBROUTINE