Index: XIOS3/trunk/src/interface/fortran/iaxis.F90
===================================================================
--- XIOS3/trunk/src/interface/fortran/iaxis.F90	(revision 2616)
+++ XIOS3/trunk/src/interface/fortran/iaxis.F90	(revision 2620)
@@ -5,5 +5,6 @@
    USE AXIS_INTERFACE
    USE AXISGROUP_INTERFACE
-   
+   USE LOGICAL_BOOL_CONVERSION
+
    TYPE txios(axis)
       INTEGER(kind = C_INTPTR_T) :: daddr
@@ -40,4 +41,5 @@
       
       CALL cxios_axis_valid_id(val, idt, len(idt))
+      CALL xios_bool_to_logical_0d(val)
       xios(is_valid_axis) = val
 
@@ -50,4 +52,5 @@
 
       CALL cxios_axisgroup_valid_id(val, idt, len(idt))
+      CALL xios_bool_to_logical_0d(val)
       xios(is_valid_axisgroup) = val
 
Index: XIOS3/trunk/src/interface/fortran/icalendar_wrapper.F90
===================================================================
--- XIOS3/trunk/src/interface/fortran/icalendar_wrapper.F90	(revision 2616)
+++ XIOS3/trunk/src/interface/fortran/icalendar_wrapper.F90	(revision 2620)
@@ -6,4 +6,5 @@
    USE IDATE
    USE IDURATION
+   USE LOGICAL_BOOL_CONVERSION
 
    TYPE txios(calendar_wrapper)
@@ -34,4 +35,5 @@
 
       CALL cxios_calendar_wrapper_valid_id(val, idt, len(idt));
+      CALL xios_bool_to_logical_0d(val)
       xios(is_valid_calendar_wrapper) = val
    END FUNCTION  xios(is_valid_calendar_wrapper)
Index: XIOS3/trunk/src/interface/fortran/icompute_connectivity_domain.F90
===================================================================
--- XIOS3/trunk/src/interface/fortran/icompute_connectivity_domain.F90	(revision 2616)
+++ XIOS3/trunk/src/interface/fortran/icompute_connectivity_domain.F90	(revision 2620)
@@ -4,4 +4,5 @@
    USE, INTRINSIC :: ISO_C_BINDING
    USE COMPUTE_CONNECTIVITY_DOMAIN_INTERFACE
+   USE LOGICAL_BOOL_CONVERSION
 
    TYPE txios(compute_connectivity_domain)
@@ -24,4 +25,5 @@
 
       CALL cxios_compute_connectivity_domain_valid_id(val, idt, len(idt))
+      CALL xios_bool_to_logical_0d(val)
       xios(is_valid_compute_connectivity_domain) = val
 
Index: XIOS3/trunk/src/interface/fortran/icontext.F90
===================================================================
--- XIOS3/trunk/src/interface/fortran/icontext.F90	(revision 2616)
+++ XIOS3/trunk/src/interface/fortran/icontext.F90	(revision 2620)
@@ -7,4 +7,5 @@
    USE IDURATION
 !   USE icontext_attr
+   USE LOGICAL_BOOL_CONVERSION
 
 
@@ -62,4 +63,5 @@
          wswap = .FALSE.
       END IF
+      CALL xios_logical_to_bool_0d(wswap)
       CALL cxios_context_set_current(context%daddr, wswap)
 
@@ -83,4 +85,5 @@
 
       CALL cxios_context_valid_id(val, idt, len(idt));
+      CALL xios_bool_to_logical_0d(val)
       xios(is_valid_context) = val
 
Index: XIOS3/trunk/src/interface/fortran/idata.F90
===================================================================
--- XIOS3/trunk/src/interface/fortran/idata.F90	(revision 2616)
+++ XIOS3/trunk/src/interface/fortran/idata.F90	(revision 2620)
@@ -5,4 +5,5 @@
    USE ICONTEXT
    USE IFIELD
+   USE LOGICAL_BOOL_CONVERSION
 
    INTERFACE ! Ne pas appeler directement/Interface FORTRAN 2003 <-> C99
@@ -780,4 +781,5 @@
 
       CALL cxios_context_is_initialized(context_id, LEN(context_id), is_init)
+      CALL xios_bool_to_logical_0d(is_init)
       xios(context_is_initialized) = is_init
 
@@ -1347,4 +1349,5 @@
       CALL cxios_get_variable_data_k8(varId, len(varId), data_k8, val)
 
+      CALL xios_bool_to_logical_0d(val)
       xios(getVar_k8) = val
    END FUNCTION xios(getVar_k8)
@@ -1359,4 +1362,5 @@
       CALL cxios_get_variable_data_k4(varId, len(varId), data_k4, val)
 
+      CALL xios_bool_to_logical_0d(val)
       xios(getVar_k4) = val
    END FUNCTION xios(getVar_k4)
@@ -1371,4 +1375,5 @@
       CALL cxios_get_variable_data_int(varId, len(varId), data_int, val)
 
+      CALL xios_bool_to_logical_0d(val)
       xios(getVar_int) = val
    END FUNCTION xios(getVar_int)
@@ -1383,6 +1388,10 @@
 
       CALL cxios_get_variable_data_logic(varId, len(varId), data_tmp, val)
+      CALL xios_bool_to_logical_0d(val)
       xios(getVar_logic) = val
-      IF (val) data_logic = data_tmp
+      IF (val) THEN
+         CALL xios_bool_to_logical_0d(data_tmp)
+         data_logic = data_tmp
+      ENDIF
    END FUNCTION xios(getVar_logic)
 
@@ -1396,4 +1405,5 @@
       CALL cxios_get_variable_data_char(varId, len(varId), data_char, len(data_char), val)
 
+      CALL xios_bool_to_logical_0d(val)
       xios(getVar_char) = val
    END FUNCTION xios(getVar_char)
@@ -1409,4 +1419,5 @@
       CALL cxios_set_variable_data_k8(varId, len(varId), data_k8, val)
 
+      CALL xios_bool_to_logical_0d(val)
       xios(setVar_k8) = val
    END FUNCTION xios(setVar_k8)
@@ -1421,4 +1432,5 @@
       CALL cxios_set_variable_data_k4(varId, len(varId), data_k4, val)
 
+      CALL xios_bool_to_logical_0d(val)
       xios(setVar_k4) = val
    END FUNCTION xios(setVar_k4)
@@ -1433,4 +1445,5 @@
       CALL cxios_set_variable_data_int(varId, len(varId), data_int, val)
 
+      CALL xios_bool_to_logical_0d(val)
       xios(setVar_int) = val
    END FUNCTION xios(setVar_int)
@@ -1445,6 +1458,8 @@
 
       data_tmp = data_logic
+      CALL xios_logical_to_bool_0d(data_tmp)
       CALL cxios_set_variable_data_logic(varId, len(varId), data_tmp, val)
 
+      CALL xios_bool_to_logical_0d(val)
       xios(setVar_logic) = val
    END FUNCTION xios(setVar_logic)
@@ -1459,4 +1474,5 @@
       CALL cxios_set_variable_data_char(varId, len(varId), data_char, len(data_char), val)
 
+      CALL xios_bool_to_logical_0d(val)
       xios(setVar_char) = val
    END FUNCTION xios(setVar_char)
Index: XIOS3/trunk/src/interface/fortran/idate.F90
===================================================================
--- XIOS3/trunk/src/interface/fortran/idate.F90	(revision 2616)
+++ XIOS3/trunk/src/interface/fortran/idate.F90	(revision 2620)
@@ -3,4 +3,5 @@
    USE, INTRINSIC :: ISO_C_BINDING
    USE DATE_INTERFACE
+   USE LOGICAL_BOOL_CONVERSION
 
    INTERFACE OPERATOR(+)
@@ -115,6 +116,9 @@
       TYPE(txios(date)), INTENT(IN) :: date1, date2
       LOGICAL :: res
-
-      res = cxios_date_eq(date1, date2)
+      LOGICAL (KIND=C_BOOL) :: res__tmp
+
+      res__tmp = cxios_date_eq(date1, date2)
+      CALL xios_bool_to_logical_0d(res__tmp)
+      res = res__tmp
    END FUNCTION xios(date_eq)
 
@@ -124,6 +128,9 @@
       TYPE(txios(date)), INTENT(IN) :: date1, date2
       LOGICAL :: res
-
-      res = cxios_date_neq(date1, date2)
+      LOGICAL (KIND=C_BOOL) :: res__tmp
+
+      res__tmp = cxios_date_neq(date1, date2)
+      CALL xios_bool_to_logical_0d(res__tmp)
+      res = res__tmp
    END FUNCTION xios(date_neq)
 
@@ -133,6 +140,9 @@
       TYPE(txios(date)), INTENT(IN) :: date1, date2
       LOGICAL :: res
-
-      res = cxios_date_lt(date1, date2)
+      LOGICAL (KIND=C_BOOL) :: res__tmp
+
+      res__tmp = cxios_date_lt(date1, date2)
+      CALL xios_bool_to_logical_0d(res__tmp)
+      res = res__tmp
    END FUNCTION xios(date_lt)
 
@@ -142,6 +152,9 @@
       TYPE(txios(date)), INTENT(IN) :: date1, date2
       LOGICAL :: res
-
-      res = cxios_date_le(date1, date2)
+      LOGICAL (KIND=C_BOOL) :: res__tmp
+
+      res__tmp = cxios_date_le(date1, date2)
+      CALL xios_bool_to_logical_0d(res__tmp)
+      res = res__tmp
    END FUNCTION xios(date_le)
 
@@ -151,6 +164,9 @@
       TYPE(txios(date)), INTENT(IN) :: date1, date2
       LOGICAL :: res
-
-      res = cxios_date_gt(date1, date2)
+      LOGICAL (KIND=C_BOOL) :: res__tmp
+
+      res__tmp = cxios_date_gt(date1, date2)
+      CALL xios_bool_to_logical_0d(res__tmp)
+      res = res__tmp
    END FUNCTION xios(date_gt)
 
@@ -160,6 +176,9 @@
       TYPE(txios(date)), INTENT(IN) :: date1, date2
       LOGICAL :: res
-
-      res = cxios_date_ge(date1, date2)
+      LOGICAL (KIND=C_BOOL) :: res__tmp
+
+      res__tmp = cxios_date_ge(date1, date2)
+      CALL xios_bool_to_logical_0d(res__tmp)
+      res = res__tmp
    END FUNCTION xios(date_ge)
 
Index: XIOS3/trunk/src/interface/fortran/idomain.F90
===================================================================
--- XIOS3/trunk/src/interface/fortran/idomain.F90	(revision 2616)
+++ XIOS3/trunk/src/interface/fortran/idomain.F90	(revision 2620)
@@ -7,4 +7,5 @@
 !   USE IDOMAIN_ATTR
 !   USE IDOMAINGROUP_ATTR
+   USE LOGICAL_BOOL_CONVERSION
       
    TYPE txios(domain)
@@ -42,4 +43,5 @@
       LOGICAL  (kind = 1)                 :: val
       CALL cxios_domain_valid_id(val, idt, len(idt));
+      CALL xios_bool_to_logical_0d(val)
       xios(is_valid_domain) = val
    END FUNCTION  xios(is_valid_domain)
@@ -50,4 +52,5 @@
       LOGICAL  (kind = 1)                 :: val
       CALL cxios_domaingroup_valid_id(val, idt, len(idt));
+      CALL xios_bool_to_logical_0d(val)
       xios(is_valid_domaingroup) = val
    END FUNCTION  xios(is_valid_domaingroup)
Index: XIOS3/trunk/src/interface/fortran/iduplicate_scalar_to_axis_interface.F90
===================================================================
--- XIOS3/trunk/src/interface/fortran/iduplicate_scalar_to_axis_interface.F90	(revision 2616)
+++ XIOS3/trunk/src/interface/fortran/iduplicate_scalar_to_axis_interface.F90	(revision 2620)
@@ -4,4 +4,5 @@
    USE, INTRINSIC :: ISO_C_BINDING
    USE DUPLICATE_SCALAR_TO_AXIS_INTERFACE
+   USE LOGICAL_BOOL_CONVERSION
 
    TYPE txios(duplicate_scalar_to_axis)
@@ -24,4 +25,5 @@
 
       CALL cxios_duplicate_scalar_to_axis_valid_id(val, idt, len(idt))
+      CALL xios_bool_to_logical_0d(val)
       xios(is_valid_duplicate_scalar_to_axis) = val
 
Index: XIOS3/trunk/src/interface/fortran/iduration.F90
===================================================================
--- XIOS3/trunk/src/interface/fortran/iduration.F90	(revision 2616)
+++ XIOS3/trunk/src/interface/fortran/iduration.F90	(revision 2620)
@@ -4,4 +4,5 @@
    USE, INTRINSIC :: ISO_C_BINDING
    USE DURATION_INTERFACE
+   USE LOGICAL_BOOL_CONVERSION
 
    TYPE(txios(duration)), PARAMETER :: xios(year) = txios(duration)(1, 0, 0, 0, 0, 0, 0)
@@ -176,6 +177,9 @@
       TYPE(txios(duration)), INTENT(IN) :: dur1, dur2
       LOGICAL :: res
+      LOGICAL (KIND=C_BOOL) :: res__tmp
 
-      res = cxios_duration_eq(dur1, dur2)
+      res__tmp = cxios_duration_eq(dur1, dur2)
+      CALL xios_bool_to_logical_0d(res__tmp)
+      res = res__tmp
    END FUNCTION xios(duration_eq)
 
@@ -185,6 +189,9 @@
       TYPE(txios(duration)), INTENT(IN) :: dur1, dur2
       LOGICAL :: res
+      LOGICAL (KIND=C_BOOL) :: res__tmp
 
-      res = cxios_duration_neq(dur1, dur2)
+      res__tmp = cxios_duration_neq(dur1, dur2)
+      CALL xios_bool_to_logical_0d(res__tmp)
+      res = res__tmp
    END FUNCTION xios(duration_neq)
 
Index: XIOS3/trunk/src/interface/fortran/iexpand_domain.F90
===================================================================
--- XIOS3/trunk/src/interface/fortran/iexpand_domain.F90	(revision 2616)
+++ XIOS3/trunk/src/interface/fortran/iexpand_domain.F90	(revision 2620)
@@ -4,4 +4,5 @@
    USE, INTRINSIC :: ISO_C_BINDING
    USE EXPAND_DOMAIN_INTERFACE
+   USE LOGICAL_BOOL_CONVERSION
 
    TYPE txios(expand_domain)
@@ -24,4 +25,5 @@
 
       CALL cxios_expand_domain_valid_id(val, idt, len(idt))
+      CALL xios_bool_to_logical_0d(val)
       xios(is_valid_expand_domain) = val
 
Index: XIOS3/trunk/src/interface/fortran/iextract_axis_to_scalar.F90
===================================================================
--- XIOS3/trunk/src/interface/fortran/iextract_axis_to_scalar.F90	(revision 2616)
+++ XIOS3/trunk/src/interface/fortran/iextract_axis_to_scalar.F90	(revision 2620)
@@ -4,4 +4,5 @@
    USE, INTRINSIC :: ISO_C_BINDING
    USE EXTRACT_AXIS_TO_SCALAR_INTERFACE
+   USE LOGICAL_BOOL_CONVERSION
 
    TYPE txios(extract_axis_to_scalar)
@@ -24,4 +25,5 @@
 
       CALL cxios_extract_axis_to_scalar_valid_id(val, idt, len(idt))
+      CALL xios_bool_to_logical_0d(val)
       xios(is_valid_extract_axis_to_scalar) = val
 
Index: XIOS3/trunk/src/interface/fortran/iextract_domain.F90
===================================================================
--- XIOS3/trunk/src/interface/fortran/iextract_domain.F90	(revision 2616)
+++ XIOS3/trunk/src/interface/fortran/iextract_domain.F90	(revision 2620)
@@ -4,4 +4,5 @@
    USE, INTRINSIC :: ISO_C_BINDING
    USE EXTRACT_DOMAIN_INTERFACE
+   USE LOGICAL_BOOL_CONVERSION
 
    TYPE txios(extract_domain)
@@ -24,4 +25,5 @@
 
       CALL cxios_extract_domain_valid_id(val, idt, len(idt))
+      CALL xios_bool_to_logical_0d(val)
       xios(is_valid_extract_domain) = val
 
Index: XIOS3/trunk/src/interface/fortran/iextract_domain_to_axis.F90
===================================================================
--- XIOS3/trunk/src/interface/fortran/iextract_domain_to_axis.F90	(revision 2616)
+++ XIOS3/trunk/src/interface/fortran/iextract_domain_to_axis.F90	(revision 2620)
@@ -4,4 +4,5 @@
    USE, INTRINSIC :: ISO_C_BINDING
    USE EXTRACT_DOMAIN_TO_AXIS_INTERFACE
+   USE LOGICAL_BOOL_CONVERSION
 
    TYPE txios(extract_domain_to_axis)
@@ -24,4 +25,5 @@
 
       CALL cxios_extract_domain_to_axis_valid_id(val, idt, len(idt))
+      CALL xios_bool_to_logical_0d(val)
       xios(is_valid_extract_domain_to_axis) = val
 
Index: XIOS3/trunk/src/interface/fortran/ifield.F90
===================================================================
--- XIOS3/trunk/src/interface/fortran/ifield.F90	(revision 2616)
+++ XIOS3/trunk/src/interface/fortran/ifield.F90	(revision 2620)
@@ -11,4 +11,5 @@
    USE IAXIS
    USE ISCALAR
+   USE LOGICAL_BOOL_CONVERSION
    
    TYPE txios(field)
@@ -129,4 +130,5 @@
       
       CALL cxios_field_valid_id(val, idt, len(idt));
+      CALL xios_bool_to_logical_0d(val)
       xios(is_valid_field) = val
 
@@ -138,4 +140,5 @@
       LOGICAL  (kind = 1)                 :: val
       CALL cxios_fieldgroup_valid_id(val, idt, len(idt));
+      CALL xios_bool_to_logical_0d(val)
       xios(is_valid_fieldgroup) = val
 
@@ -166,5 +169,7 @@
       ENDIF
 
+      CALL xios_logical_to_bool_0d(at_current_timestep)
       CALL cxios_field_is_active(field_hdl%daddr, at_current_timestep, ret);
+      CALL xios_bool_to_logical_0d(ret)
       xios(field_is_active_hdl) = ret
       
Index: XIOS3/trunk/src/interface/fortran/ifile.F90
===================================================================
--- XIOS3/trunk/src/interface/fortran/ifile.F90	(revision 2616)
+++ XIOS3/trunk/src/interface/fortran/ifile.F90	(revision 2620)
@@ -8,4 +8,5 @@
 !   USE IFILEGROUP_ATTR
    USE IDURATION
+   USE LOGICAL_BOOL_CONVERSION
    
    TYPE txios(file)
@@ -43,4 +44,5 @@
 
       CALL cxios_file_valid_id(val, idt, len(idt));
+      CALL xios_bool_to_logical_0d(val)
       xios(is_valid_file) = val
 
@@ -53,4 +55,5 @@
 
       CALL cxios_filegroup_valid_id(val, idt, len(idt));
+      CALL xios_bool_to_logical_0d(val)
       xios(is_valid_filegroup) = val
 
Index: XIOS3/trunk/src/interface/fortran/igenerate_rectilinear_domain.F90
===================================================================
--- XIOS3/trunk/src/interface/fortran/igenerate_rectilinear_domain.F90	(revision 2616)
+++ XIOS3/trunk/src/interface/fortran/igenerate_rectilinear_domain.F90	(revision 2620)
@@ -4,4 +4,5 @@
    USE, INTRINSIC :: ISO_C_BINDING
    USE GENERATE_RECTILINEAR_DOMAIN_INTERFACE
+   USE LOGICAL_BOOL_CONVERSION
 
    TYPE txios(generate_rectilinear_domain)
@@ -24,4 +25,5 @@
 
       CALL cxios_generate_rectilinear_domain_valid_id(val, idt, len(idt))
+      CALL xios_bool_to_logical_0d(val)
       xios(is_valid_generate_rectilinear_domain) = val
 
Index: XIOS3/trunk/src/interface/fortran/igrid.F90
===================================================================
--- XIOS3/trunk/src/interface/fortran/igrid.F90	(revision 2616)
+++ XIOS3/trunk/src/interface/fortran/igrid.F90	(revision 2620)
@@ -7,4 +7,5 @@
 !   USE IGRID_ATTR
 !   USE IGRIDGROUP_ATTR
+   USE LOGICAL_BOOL_CONVERSION
    
    TYPE txios(grid)
@@ -43,4 +44,5 @@
 
       CALL cxios_grid_valid_id(val, idt, len(idt));
+      CALL xios_bool_to_logical_0d(val)
       xios(is_valid_grid) = val
 
@@ -53,4 +55,5 @@
 
       CALL cxios_gridgroup_valid_id(val, idt, len(idt));
+      CALL xios_bool_to_logical_0d(val)
       xios(is_valid_gridgroup) = val
 
Index: XIOS3/trunk/src/interface/fortran/iinterpolate_axis.F90
===================================================================
--- XIOS3/trunk/src/interface/fortran/iinterpolate_axis.F90	(revision 2616)
+++ XIOS3/trunk/src/interface/fortran/iinterpolate_axis.F90	(revision 2620)
@@ -4,4 +4,5 @@
    USE, INTRINSIC :: ISO_C_BINDING
    USE INTERPOLATE_AXIS_INTERFACE
+   USE LOGICAL_BOOL_CONVERSION
 
    TYPE txios(interpolate_axis)
@@ -24,4 +25,5 @@
 
       CALL cxios_interpolate_axis_valid_id(val, idt, len(idt))
+      CALL xios_bool_to_logical_0d(val)
       xios(is_valid_interpolate_axis) = val
 
Index: XIOS3/trunk/src/interface/fortran/iinterpolate_domain.F90
===================================================================
--- XIOS3/trunk/src/interface/fortran/iinterpolate_domain.F90	(revision 2616)
+++ XIOS3/trunk/src/interface/fortran/iinterpolate_domain.F90	(revision 2620)
@@ -4,4 +4,5 @@
    USE, INTRINSIC :: ISO_C_BINDING
    USE INTERPOLATE_DOMAIN_INTERFACE
+   USE LOGICAL_BOOL_CONVERSION
 
    TYPE txios(interpolate_domain)
@@ -24,4 +25,5 @@
 
       CALL cxios_interpolate_domain_valid_id(val, idt, len(idt))
+      CALL xios_bool_to_logical_0d(val)
       xios(is_valid_interpolate_domain) = val
 
Index: XIOS3/trunk/src/interface/fortran/iinverse_axis.F90
===================================================================
--- XIOS3/trunk/src/interface/fortran/iinverse_axis.F90	(revision 2616)
+++ XIOS3/trunk/src/interface/fortran/iinverse_axis.F90	(revision 2620)
@@ -4,4 +4,5 @@
    USE, INTRINSIC :: ISO_C_BINDING
    USE INVERSE_AXIS_INTERFACE
+   USE LOGICAL_BOOL_CONVERSION
 
    TYPE txios(inverse_axis)
@@ -24,4 +25,5 @@
 
       CALL cxios_inverse_axis_valid_id(val, idt, len(idt))
+      CALL xios_bool_to_logical_0d(val)
       xios(is_valid_inverse_axis) = val
 
Index: XIOS3/trunk/src/interface/fortran/ilogical_bool_conversion.f90
===================================================================
--- XIOS3/trunk/src/interface/fortran/ilogical_bool_conversion.f90	(revision 2620)
+++ XIOS3/trunk/src/interface/fortran/ilogical_bool_conversion.f90	(revision 2620)
@@ -0,0 +1,359 @@
+MODULE logical_bool_conversion
+
+  USE, INTRINSIC :: ISO_C_BINDING
+  INTERFACE
+    FUNCTION cxios_set_logical_true() BIND(C)
+      USE ISO_C_BINDING
+      LOGICAL(kind=C_BOOL) :: cxios_set_logical_true
+    END FUNCTION cxios_set_logical_true
+
+    FUNCTION cxios_set_logical_false() BIND(C)
+      USE ISO_C_BINDING
+      LOGICAL(kind=C_BOOL) :: cxios_set_logical_false
+    END FUNCTION cxios_set_logical_false
+  END INTERFACE
+
+CONTAINS
+  SUBROUTINE xios_logical_to_bool_0d(tmp)
+    IMPLICIT NONE
+    LOGICAL (KIND=C_BOOL), INTENT(INOUT) :: tmp
+    LOGICAL (KIND=C_BOOL) :: ctrue, cfalse
+    ctrue  =  cxios_set_logical_true()
+    cfalse =  cxios_set_logical_false()
+    if (tmp.eq..false.) then
+      tmp = cfalse
+    else
+      tmp = ctrue
+    endif
+  END SUBROUTINE xios_logical_to_bool_0d
+
+  SUBROUTINE xios_logical_to_bool_1d(tmp, ni_)
+    IMPLICIT NONE
+    LOGICAL (KIND=C_BOOL), INTENT(INOUT) :: tmp(:)
+    INTEGER, INTENT(IN) :: ni_(:)
+    INTEGER :: ij
+    LOGICAL (KIND=C_BOOL) :: ctrue, cfalse
+    ctrue  =  cxios_set_logical_true()
+    cfalse =  cxios_set_logical_false()
+    do ij=1,ni_(1)
+       if (tmp(ij).eq..false.) then
+          tmp(ij) = cfalse
+       else
+          tmp(ij) = ctrue
+       endif
+    enddo
+  END SUBROUTINE xios_logical_to_bool_1d
+
+  SUBROUTINE xios_logical_to_bool_2d(tmp, ni_)
+    IMPLICIT NONE
+    LOGICAL (KIND=C_BOOL), INTENT(INOUT) :: tmp(:,:)
+    INTEGER, INTENT(IN) :: ni_(:)
+    INTEGER :: i,j
+    LOGICAL (KIND=C_BOOL) :: ctrue, cfalse
+    ctrue  =  cxios_set_logical_true()
+    cfalse =  cxios_set_logical_false()
+    do j=1,ni_(2)
+      do i=1,ni_(1)
+        if (tmp(i,j).eq..false.) then
+          tmp(i,j) = cfalse
+        else
+          tmp(i,j) = ctrue
+        endif
+      enddo
+    enddo
+  END SUBROUTINE xios_logical_to_bool_2d
+
+  SUBROUTINE xios_logical_to_bool_3d(tmp, ni_)
+    IMPLICIT NONE
+    LOGICAL (KIND=C_BOOL), INTENT(INOUT) :: tmp(:,:,:)
+    INTEGER, INTENT(IN) :: ni_(:)
+    INTEGER :: i,j,k
+    LOGICAL (KIND=C_BOOL) :: ctrue, cfalse
+    ctrue  =  cxios_set_logical_true()
+    cfalse =  cxios_set_logical_false()
+    do k=1,ni_(3)
+      do j=1,ni_(2)
+        do i=1,ni_(1)
+          if (tmp(i,j,k).eq..false.) then
+            tmp(i,j,k) = cfalse
+          else
+            tmp(i,j,k) = ctrue
+          endif
+        enddo
+      enddo
+    enddo
+  END SUBROUTINE xios_logical_to_bool_3d
+  
+  SUBROUTINE xios_logical_to_bool_4d(tmp, ni_)
+    IMPLICIT NONE
+    LOGICAL (KIND=C_BOOL), INTENT(INOUT) :: tmp(:,:,:,:)
+    INTEGER, INTENT(IN) :: ni_(:)
+    INTEGER :: i,j,k,l
+    LOGICAL (KIND=C_BOOL) :: ctrue, cfalse
+    ctrue  =  cxios_set_logical_true()
+    cfalse =  cxios_set_logical_false()
+    do l=1,ni_(4)
+      do k=1,ni_(3)
+        do j=1,ni_(2)
+          do i=1,ni_(1)
+            if (tmp(i,j,k,l).eq..false.) then
+              tmp(i,j,k,l) = cfalse
+            else
+              tmp(i,j,k,l) = ctrue
+            endif
+          enddo
+        enddo
+      enddo
+    enddo
+  END SUBROUTINE xios_logical_to_bool_4d
+
+  SUBROUTINE xios_logical_to_bool_5d(tmp, ni_)
+    IMPLICIT NONE
+    LOGICAL (KIND=C_BOOL), INTENT(INOUT) :: tmp(:,:,:,:,:)
+    INTEGER, INTENT(IN) :: ni_(:)
+    INTEGER :: i,j,k,l,m
+    LOGICAL (KIND=C_BOOL) :: ctrue, cfalse
+    ctrue  =  cxios_set_logical_true()
+    cfalse =  cxios_set_logical_false()
+    do m=1,ni_(5)
+      do l=1,ni_(4)
+        do k=1,ni_(3)
+          do j=1,ni_(2)
+            do i=1,ni_(1)
+              if (tmp(i,j,k,l,m).eq..false.) then
+                tmp(i,j,k,l,m) = cfalse
+              else
+                tmp(i,j,k,l,m) = ctrue
+              endif
+            enddo
+          enddo
+        enddo
+      enddo
+    enddo
+  END SUBROUTINE xios_logical_to_bool_5d
+  
+  SUBROUTINE xios_logical_to_bool_6d(tmp, ni_)
+    IMPLICIT NONE
+    LOGICAL (KIND=C_BOOL), INTENT(INOUT) :: tmp(:,:,:,:,:,:)
+    INTEGER, INTENT(IN) :: ni_(:)
+    INTEGER :: i,j,k,l,m,p
+    LOGICAL (KIND=C_BOOL) :: ctrue, cfalse
+    ctrue  =  cxios_set_logical_true()
+    cfalse =  cxios_set_logical_false()
+    do p=1,ni_(6)
+      do m=1,ni_(5)
+        do l=1,ni_(4)
+          do k=1,ni_(3)
+            do j=1,ni_(2)
+              do i=1,ni_(1)
+                if (tmp(i,j,k,l,m,p).eq..false.) then
+                  tmp(i,j,k,l,m,p) = cfalse
+                else
+                  tmp(i,j,k,l,m,p) = ctrue
+                endif
+              enddo
+            enddo
+          enddo
+        enddo
+      enddo
+    enddo
+  END SUBROUTINE xios_logical_to_bool_6d
+  
+  SUBROUTINE xios_logical_to_bool_7d(tmp, ni_)
+    IMPLICIT NONE
+    LOGICAL (KIND=C_BOOL), INTENT(INOUT) :: tmp(:,:,:,:,:,:,:)
+    INTEGER, INTENT(IN) :: ni_(:)
+    INTEGER :: i,j,k,l,m,p,q
+    LOGICAL (KIND=C_BOOL) :: ctrue, cfalse
+    ctrue  =  cxios_set_logical_true()
+    cfalse =  cxios_set_logical_false()
+    do q=1,ni_(7)
+      do p=1,ni_(6)
+        do m=1,ni_(5)
+          do l=1,ni_(4)
+            do k=1,ni_(3)
+              do j=1,ni_(2)
+                do i=1,ni_(1)
+                  if (tmp(i,j,k,l,m,p,q).eq..false.) then
+                    tmp(i,j,k,l,m,p,q) = cfalse
+                  else
+                    tmp(i,j,k,l,m,p,q) = ctrue
+                  endif
+                enddo
+              enddo
+            enddo
+          enddo
+        enddo
+      enddo
+    enddo
+  END SUBROUTINE xios_logical_to_bool_7d
+
+
+  SUBROUTINE xios_bool_to_logical_0d(tmp)
+    IMPLICIT NONE
+    LOGICAL (KIND=C_BOOL), INTENT(INOUT) :: tmp
+    if (tmp.eq..false.) then
+      tmp = .false.
+    else
+      tmp = .true.
+    endif
+  END SUBROUTINE xios_bool_to_logical_0d
+
+  SUBROUTINE xios_bool_to_logical_1d(tmp, ni_)
+    IMPLICIT NONE
+    LOGICAL (KIND=C_BOOL), INTENT(INOUT) :: tmp(:)
+    INTEGER, INTENT(IN) :: ni_(:)
+    INTEGER :: ij
+    do ij=1,ni_(1)
+       if (tmp(ij).eq..false.) then
+          tmp(ij) = .false.
+       else
+          tmp(ij) = .true.
+       endif
+    enddo
+  END SUBROUTINE xios_bool_to_logical_1d
+
+  SUBROUTINE xios_bool_to_logical_2d(tmp, ni_)
+    IMPLICIT NONE
+    LOGICAL (KIND=C_BOOL), INTENT(INOUT) :: tmp(:,:)
+    INTEGER, INTENT(IN) :: ni_(:)
+    INTEGER :: i,j
+    do j=1,ni_(2)
+      do i=1,ni_(1)
+        if (tmp(i,j).eq..false.) then
+          tmp(i,j) = .false.
+        else
+          tmp(i,j) = .true.
+        endif
+      enddo
+    enddo
+  END SUBROUTINE xios_bool_to_logical_2d
+
+  SUBROUTINE xios_bool_to_logical_3d(tmp, ni_)
+    IMPLICIT NONE
+    LOGICAL (KIND=C_BOOL), INTENT(INOUT) :: tmp(:,:,:)
+    INTEGER, INTENT(IN) :: ni_(:)
+    INTEGER :: i,j,k
+    do k=1,ni_(3)
+      do j=1,ni_(2)
+        do i=1,ni_(1)
+          if (tmp(i,j,k).eq..false.) then
+            tmp(i,j,k) = .false.
+          else
+            tmp(i,j,k) = .true.
+          endif
+        enddo
+      enddo
+    enddo
+  END SUBROUTINE xios_bool_to_logical_3d
+  
+  SUBROUTINE xios_bool_to_logical_4d(tmp, ni_)
+    IMPLICIT NONE
+    LOGICAL (KIND=C_BOOL), INTENT(INOUT) :: tmp(:,:,:,:)
+    INTEGER, INTENT(IN) :: ni_(:)
+    INTEGER :: i,j,k,l
+    do l=1,ni_(4)
+      do k=1,ni_(3)
+        do j=1,ni_(2)
+          do i=1,ni_(1)
+            if (tmp(i,j,k,l).eq..false.) then
+              tmp(i,j,k,l) = .false.
+            else
+              tmp(i,j,k,l) = .true.
+            endif
+          enddo
+        enddo
+      enddo
+    enddo
+  END SUBROUTINE xios_bool_to_logical_4d
+
+  SUBROUTINE xios_bool_to_logical_5d(tmp, ni_)
+    IMPLICIT NONE
+    LOGICAL (KIND=C_BOOL), INTENT(INOUT) :: tmp(:,:,:,:,:)
+    INTEGER, INTENT(IN) :: ni_(:)
+    INTEGER :: i,j,k,l,m
+    do m=1,ni_(5)
+      do l=1,ni_(4)
+        do k=1,ni_(3)
+          do j=1,ni_(2)
+            do i=1,ni_(1)
+              if (tmp(i,j,k,l,m).eq..false.) then
+                tmp(i,j,k,l,m) = .false.
+              else
+                tmp(i,j,k,l,m) = .true.
+              endif
+            enddo
+          enddo
+        enddo
+      enddo
+    enddo
+  END SUBROUTINE xios_bool_to_logical_5d
+  
+  SUBROUTINE xios_bool_to_logical_6d(tmp, ni_)
+    IMPLICIT NONE
+    LOGICAL (KIND=C_BOOL), INTENT(INOUT) :: tmp(:,:,:,:,:,:)
+    INTEGER, INTENT(IN) :: ni_(:)
+    INTEGER :: i,j,k,l,m,p
+    do p=1,ni_(6)
+      do m=1,ni_(5)
+        do l=1,ni_(4)
+          do k=1,ni_(3)
+            do j=1,ni_(2)
+              do i=1,ni_(1)
+                if (tmp(i,j,k,l,m,p).eq..false.) then
+                  tmp(i,j,k,l,m,p) = .false.
+                else
+                  tmp(i,j,k,l,m,p) = .true.
+                endif
+              enddo
+            enddo
+          enddo
+        enddo
+      enddo
+    enddo
+  END SUBROUTINE xios_bool_to_logical_6d
+  
+  SUBROUTINE xios_bool_to_logical_7d(tmp, ni_)
+    IMPLICIT NONE
+    LOGICAL (KIND=C_BOOL), INTENT(INOUT) :: tmp(:,:,:,:,:,:,:)
+    INTEGER, INTENT(IN) :: ni_(:)
+    INTEGER :: i,j,k,l,m,p,q
+    do q=1,ni_(7)
+      do p=1,ni_(6)
+        do m=1,ni_(5)
+          do l=1,ni_(4)
+            do k=1,ni_(3)
+              do j=1,ni_(2)
+                do i=1,ni_(1)
+                  if (tmp(i,j,k,l,m,p,q).eq..false.) then
+                    tmp(i,j,k,l,m,p,q) = .false.
+                  else
+                    tmp(i,j,k,l,m,p,q) = .true.
+                  endif
+                enddo
+              enddo
+            enddo
+          enddo
+        enddo
+      enddo
+    enddo
+  END SUBROUTINE xios_bool_to_logical_7d
+  
+  !SUBROUTINE xios_bool_to_logical_0d(tmp, ni_)
+  !  IMPLICIT NONE
+  !  LOGICAL (KIND=C_BOOL), INTENT(INOUT) :: tmp(:)
+  !  INTEGER, INTENT(IN) :: ni_(:)
+  !  INTEGER :: ij
+  !  do ij=1,ni_(1)
+  !     if (tmp(ij).eq..false.) then
+  !        tmp(ij) = .false.
+  !     else
+  !        tmp(ij) = .true.
+  !     endif
+  !  enddo
+  !END SUBROUTINE xios_bool_to_logical_0d
+
+
+END MODULE logical_bool_conversion
+
+
Index: XIOS3/trunk/src/interface/fortran/imem_checker.F90
===================================================================
--- XIOS3/trunk/src/interface/fortran/imem_checker.F90	(revision 2616)
+++ XIOS3/trunk/src/interface/fortran/imem_checker.F90	(revision 2620)
@@ -3,4 +3,5 @@
 MODULE IMEM_CHECKER
    USE, INTRINSIC :: ISO_C_BINDING
+   USE LOGICAL_BOOL_CONVERSION
    
    INTERFACE ! Ne pas appeler directement/Interface FORTRAN 2003 <-> C99
@@ -40,4 +41,5 @@
       finalize_=.FALSE.
       IF (PRESENT(finalize)) finalize_ = finalize
+      CALL xios_logical_to_bool_0d(finalize_)
       CALL cxios_mem_checker_log(mem_id, len(mem_id), finalize_)
 
Index: XIOS3/trunk/src/interface/fortran/iredistribute_axis.F90
===================================================================
--- XIOS3/trunk/src/interface/fortran/iredistribute_axis.F90	(revision 2616)
+++ XIOS3/trunk/src/interface/fortran/iredistribute_axis.F90	(revision 2620)
@@ -4,4 +4,5 @@
    USE, INTRINSIC :: ISO_C_BINDING
    USE REDISTRIBUTE_AXIS_INTERFACE
+   USE LOGICAL_BOOL_CONVERSION
 
    TYPE txios(redistribute_axis)
@@ -24,4 +25,5 @@
 
       CALL cxios_redistribute_axis_valid_id(val, idt, len(idt))
+      CALL xios_bool_to_logical_0d(val)
       xios(is_valid_redistribute_axis) = val
 
Index: XIOS3/trunk/src/interface/fortran/iredistribute_domain.F90
===================================================================
--- XIOS3/trunk/src/interface/fortran/iredistribute_domain.F90	(revision 2616)
+++ XIOS3/trunk/src/interface/fortran/iredistribute_domain.F90	(revision 2620)
@@ -4,4 +4,5 @@
    USE, INTRINSIC :: ISO_C_BINDING
    USE REDISTRIBUTE_DOMAIN_INTERFACE
+   USE LOGICAL_BOOL_CONVERSION
 
    TYPE txios(redistribute_domain)
@@ -24,4 +25,5 @@
 
       CALL cxios_redistribute_domain_valid_id(val, idt, len(idt))
+      CALL xios_bool_to_logical_0d(val)
       xios(is_valid_redistribute_domain) = val
 
Index: XIOS3/trunk/src/interface/fortran/iredistribute_scalar.F90
===================================================================
--- XIOS3/trunk/src/interface/fortran/iredistribute_scalar.F90	(revision 2616)
+++ XIOS3/trunk/src/interface/fortran/iredistribute_scalar.F90	(revision 2620)
@@ -4,4 +4,5 @@
    USE, INTRINSIC :: ISO_C_BINDING
    USE REDISTRIBUTE_SCALAR_INTERFACE
+   USE LOGICAL_BOOL_CONVERSION
 
    TYPE txios(redistribute_scalar)
@@ -24,4 +25,5 @@
 
       CALL cxios_redistribute_scalar_valid_id(val, idt, len(idt))
+      CALL xios_bool_to_logical_0d(val)
       xios(is_valid_redistribute_scalar) = val
 
Index: XIOS3/trunk/src/interface/fortran/ireduce_axis_to_axis.F90
===================================================================
--- XIOS3/trunk/src/interface/fortran/ireduce_axis_to_axis.F90	(revision 2616)
+++ XIOS3/trunk/src/interface/fortran/ireduce_axis_to_axis.F90	(revision 2620)
@@ -4,4 +4,5 @@
    USE, INTRINSIC :: ISO_C_BINDING
    USE REDUCE_AXIS_TO_AXIS_INTERFACE
+   USE LOGICAL_BOOL_CONVERSION
 
    TYPE txios(reduce_axis_to_axis)
@@ -24,4 +25,5 @@
 
       CALL cxios_reduce_axis_to_axis_valid_id(val, idt, len(idt))
+      CALL xios_bool_to_logical_0d(val)
       xios(is_valid_reduce_axis_to_axis) = val
 
Index: XIOS3/trunk/src/interface/fortran/ireduce_axis_to_scalar.F90
===================================================================
--- XIOS3/trunk/src/interface/fortran/ireduce_axis_to_scalar.F90	(revision 2616)
+++ XIOS3/trunk/src/interface/fortran/ireduce_axis_to_scalar.F90	(revision 2620)
@@ -4,4 +4,5 @@
    USE, INTRINSIC :: ISO_C_BINDING
    USE REDUCE_AXIS_TO_SCALAR_INTERFACE
+   USE LOGICAL_BOOL_CONVERSION
 
    TYPE txios(reduce_axis_to_scalar)
@@ -24,4 +25,5 @@
 
       CALL cxios_reduce_axis_to_scalar_valid_id(val, idt, len(idt))
+      CALL xios_bool_to_logical_0d(val)
       xios(is_valid_reduce_axis_to_scalar) = val
 
Index: XIOS3/trunk/src/interface/fortran/ireduce_domain_to_axis.F90
===================================================================
--- XIOS3/trunk/src/interface/fortran/ireduce_domain_to_axis.F90	(revision 2616)
+++ XIOS3/trunk/src/interface/fortran/ireduce_domain_to_axis.F90	(revision 2620)
@@ -4,4 +4,5 @@
    USE, INTRINSIC :: ISO_C_BINDING
    USE REDUCE_DOMAIN_TO_AXIS_INTERFACE
+   USE LOGICAL_BOOL_CONVERSION
 
    TYPE txios(reduce_domain_to_axis)
@@ -24,4 +25,5 @@
 
       CALL cxios_reduce_domain_to_axis_valid_id(val, idt, len(idt))
+      CALL xios_bool_to_logical_0d(val)
       xios(is_valid_reduce_domain_to_axis) = val
 
Index: XIOS3/trunk/src/interface/fortran/ireduce_domain_to_scalar.F90
===================================================================
--- XIOS3/trunk/src/interface/fortran/ireduce_domain_to_scalar.F90	(revision 2616)
+++ XIOS3/trunk/src/interface/fortran/ireduce_domain_to_scalar.F90	(revision 2620)
@@ -4,4 +4,5 @@
    USE, INTRINSIC :: ISO_C_BINDING
    USE REDUCE_DOMAIN_TO_SCALAR_INTERFACE
+   USE LOGICAL_BOOL_CONVERSION
 
    TYPE txios(reduce_domain_to_scalar)
@@ -24,4 +25,5 @@
 
       CALL cxios_reduce_domain_to_scalar_valid_id(val, idt, len(idt))
+      CALL xios_bool_to_logical_0d(val)
       xios(is_valid_reduce_domain_to_scalar) = val
 
Index: XIOS3/trunk/src/interface/fortran/ireduce_scalar_to_scalar.F90
===================================================================
--- XIOS3/trunk/src/interface/fortran/ireduce_scalar_to_scalar.F90	(revision 2616)
+++ XIOS3/trunk/src/interface/fortran/ireduce_scalar_to_scalar.F90	(revision 2620)
@@ -4,4 +4,5 @@
    USE, INTRINSIC :: ISO_C_BINDING
    USE REDUCE_SCALAR_TO_SCALAR_INTERFACE
+   USE LOGICAL_BOOL_CONVERSION
 
    TYPE txios(reduce_scalar_to_scalar)
@@ -24,4 +25,5 @@
 
       CALL cxios_reduce_scalar_to_scalar_valid_id(val, idt, len(idt))
+      CALL xios_bool_to_logical_0d(val)
       xios(is_valid_reduce_scalar_to_scalar) = val
 
Index: XIOS3/trunk/src/interface/fortran/ireorder_domain.F90
===================================================================
--- XIOS3/trunk/src/interface/fortran/ireorder_domain.F90	(revision 2616)
+++ XIOS3/trunk/src/interface/fortran/ireorder_domain.F90	(revision 2620)
@@ -4,4 +4,5 @@
    USE, INTRINSIC :: ISO_C_BINDING
    USE REORDER_DOMAIN_INTERFACE
+   USE LOGICAL_BOOL_CONVERSION
 
    TYPE txios(reorder_domain)
@@ -24,4 +25,5 @@
 
       CALL cxios_reorder_domain_valid_id(val, idt, len(idt))
+      CALL xios_bool_to_logical_0d(val)
       xios(is_valid_reorder_domain) = val
 
Index: XIOS3/trunk/src/interface/fortran/iscalar.F90
===================================================================
--- XIOS3/trunk/src/interface/fortran/iscalar.F90	(revision 2616)
+++ XIOS3/trunk/src/interface/fortran/iscalar.F90	(revision 2620)
@@ -5,4 +5,5 @@
    USE SCALAR_INTERFACE
    USE SCALARGROUP_INTERFACE
+   USE LOGICAL_BOOL_CONVERSION
 
    TYPE txios(scalar)
@@ -40,4 +41,5 @@
 
       CALL cxios_scalar_valid_id(val, idt, len(idt))
+      CALL xios_bool_to_logical_0d(val)
       xios(is_valid_scalar) = val
 
@@ -50,4 +52,5 @@
 
       CALL cxios_scalargroup_valid_id(val, idt, len(idt))
+      CALL xios_bool_to_logical_0d(val)
       xios(is_valid_scalargroup) = val
 
Index: XIOS3/trunk/src/interface/fortran/itemporal_splitting.F90
===================================================================
--- XIOS3/trunk/src/interface/fortran/itemporal_splitting.F90	(revision 2616)
+++ XIOS3/trunk/src/interface/fortran/itemporal_splitting.F90	(revision 2620)
@@ -4,4 +4,5 @@
    USE, INTRINSIC :: ISO_C_BINDING
    USE TEMPORAL_SPLITTING_INTERFACE
+   USE LOGICAL_BOOL_CONVERSION
 
    TYPE txios(temporal_splitting)
@@ -24,4 +25,5 @@
 
       CALL cxios_temporal_splitting_valid_id(val, idt, len(idt))
+      CALL xios_bool_to_logical_0d(val)
       xios(is_valid_temporal_splitting) = val
 
Index: XIOS3/trunk/src/interface/fortran/itimer.F90
===================================================================
--- XIOS3/trunk/src/interface/fortran/itimer.F90	(revision 2616)
+++ XIOS3/trunk/src/interface/fortran/itimer.F90	(revision 2620)
@@ -4,4 +4,5 @@
    USE, INTRINSIC :: ISO_C_BINDING
    USE TIMER_INTERFACE
+   USE LOGICAL_BOOL_CONVERSION
 
    CONTAINS ! Fonctions disponibles pour les utilisateurs.
@@ -15,4 +16,5 @@
       trace_=.TRUE.
       IF (PRESENT(trace)) trace_ = trace
+      CALL xios_logical_to_bool_0d(trace_)
       CALL cxios_timer_resume(timer_id, len(timer_id),trace_)            
 
@@ -27,4 +29,5 @@
       trace_=.TRUE.
       IF (PRESENT(trace)) trace_ = trace
+      CALL xios_logical_to_bool_0d(trace_)
       CALL cxios_timer_suspend(timer_id, len(timer_id),trace_)            
 
Index: XIOS3/trunk/src/interface/fortran/ivariable.F90
===================================================================
--- XIOS3/trunk/src/interface/fortran/ivariable.F90	(revision 2616)
+++ XIOS3/trunk/src/interface/fortran/ivariable.F90	(revision 2620)
@@ -5,4 +5,5 @@
    USE VARIABLE_INTERFACE
    USE VARIABLEGROUP_INTERFACE
+   USE LOGICAL_BOOL_CONVERSION
    
    TYPE txios(variable)
@@ -40,4 +41,5 @@
       
       CALL cxios_variable_valid_id(val, idt, len(idt))
+      CALL xios_bool_to_logical_0d(val)
       xios(is_valid_variable) = val
 
@@ -50,4 +52,5 @@
 
       CALL cxios_variablegroup_valid_id(val, idt, len(idt))
+      CALL xios_bool_to_logical_0d(val)
       xios(is_valid_variablegroup) = val
 
Index: XIOS3/trunk/src/interface/fortran/izoom_axis.F90
===================================================================
--- XIOS3/trunk/src/interface/fortran/izoom_axis.F90	(revision 2616)
+++ XIOS3/trunk/src/interface/fortran/izoom_axis.F90	(revision 2620)
@@ -4,4 +4,5 @@
    USE, INTRINSIC :: ISO_C_BINDING
    USE ZOOM_AXIS_INTERFACE
+   USE LOGICAL_BOOL_CONVERSION
 
    TYPE txios(zoom_axis)
@@ -24,4 +25,5 @@
 
       CALL cxios_zoom_axis_valid_id(val, idt, len(idt))
+      CALL xios_bool_to_logical_0d(val)
       xios(is_valid_zoom_axis) = val
 
Index: XIOS3/trunk/src/interface/fortran/izoom_domain.F90
===================================================================
--- XIOS3/trunk/src/interface/fortran/izoom_domain.F90	(revision 2616)
+++ XIOS3/trunk/src/interface/fortran/izoom_domain.F90	(revision 2620)
@@ -4,4 +4,5 @@
    USE, INTRINSIC :: ISO_C_BINDING
    USE ZOOM_DOMAIN_INTERFACE
+   USE LOGICAL_BOOL_CONVERSION
 
    TYPE txios(zoom_domain)
@@ -24,4 +25,5 @@
 
       CALL cxios_zoom_domain_valid_id(val, idt, len(idt))
+      CALL xios_bool_to_logical_0d(val)
       xios(is_valid_zoom_domain) = val
 
