Index: XIOS/trunk/src/interface/c_attr/icaxis_attr.cpp
===================================================================
--- XIOS/trunk/src/interface/c_attr/icaxis_attr.cpp	(revision 608)
+++ XIOS/trunk/src/interface/c_attr/icaxis_attr.cpp	(revision 609)
@@ -44,4 +44,29 @@
 
 
+  void cxios_set_axis_bounds(axis_Ptr axis_hdl, double* bounds, int extent1, int extent2)
+  {
+    CTimer::get("XIOS").resume();
+    CArray<double,2> tmp(bounds, shape(extent1, extent2), neverDeleteData);
+    axis_hdl->bounds.reference(tmp.copy());
+     CTimer::get("XIOS").suspend();
+  }
+
+  void cxios_get_axis_bounds(axis_Ptr axis_hdl, double* bounds, int extent1, int extent2)
+  {
+    CTimer::get("XIOS").resume();
+    CArray<double,2> tmp(bounds, shape(extent1, extent2), neverDeleteData);
+    tmp=axis_hdl->bounds.getInheritedValue();
+     CTimer::get("XIOS").suspend();
+  }
+
+  bool cxios_is_defined_axis_bounds(axis_Ptr axis_hdl)
+  {
+     CTimer::get("XIOS").resume();
+     bool isDefined = axis_hdl->bounds.hasInheritedValue();
+     CTimer::get("XIOS").suspend();
+     return isDefined;
+  }
+
+
   void cxios_set_axis_data_begin(axis_Ptr axis_hdl, int data_begin)
   {
Index: XIOS/trunk/src/interface/c_attr/icaxisgroup_attr.cpp
===================================================================
--- XIOS/trunk/src/interface/c_attr/icaxisgroup_attr.cpp	(revision 608)
+++ XIOS/trunk/src/interface/c_attr/icaxisgroup_attr.cpp	(revision 609)
@@ -44,4 +44,29 @@
 
 
+  void cxios_set_axisgroup_bounds(axisgroup_Ptr axisgroup_hdl, double* bounds, int extent1, int extent2)
+  {
+    CTimer::get("XIOS").resume();
+    CArray<double,2> tmp(bounds, shape(extent1, extent2), neverDeleteData);
+    axisgroup_hdl->bounds.reference(tmp.copy());
+     CTimer::get("XIOS").suspend();
+  }
+
+  void cxios_get_axisgroup_bounds(axisgroup_Ptr axisgroup_hdl, double* bounds, int extent1, int extent2)
+  {
+    CTimer::get("XIOS").resume();
+    CArray<double,2> tmp(bounds, shape(extent1, extent2), neverDeleteData);
+    tmp=axisgroup_hdl->bounds.getInheritedValue();
+     CTimer::get("XIOS").suspend();
+  }
+
+  bool cxios_is_defined_axisgroup_bounds(axisgroup_Ptr axisgroup_hdl)
+  {
+     CTimer::get("XIOS").resume();
+     bool isDefined = axisgroup_hdl->bounds.hasInheritedValue();
+     CTimer::get("XIOS").suspend();
+     return isDefined;
+  }
+
+
   void cxios_set_axisgroup_data_begin(axisgroup_Ptr axisgroup_hdl, int data_begin)
   {
Index: XIOS/trunk/src/interface/fortran_attr/axis_interface_attr.F90
===================================================================
--- XIOS/trunk/src/interface/fortran_attr/axis_interface_attr.F90	(revision 608)
+++ XIOS/trunk/src/interface/fortran_attr/axis_interface_attr.F90	(revision 609)
@@ -31,4 +31,27 @@
 
 
+    SUBROUTINE cxios_set_axis_bounds(axis_hdl, bounds, extent1, extent2) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE       :: axis_hdl
+      REAL (KIND=C_DOUBLE)     , DIMENSION(*) :: bounds
+      INTEGER (kind = C_INT), VALUE  :: extent1
+      INTEGER (kind = C_INT), VALUE  :: extent2
+    END SUBROUTINE cxios_set_axis_bounds
+
+    SUBROUTINE cxios_get_axis_bounds(axis_hdl, bounds, extent1, extent2) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE       :: axis_hdl
+      REAL (KIND=C_DOUBLE)     , DIMENSION(*) :: bounds
+      INTEGER (kind = C_INT), VALUE  :: extent1
+      INTEGER (kind = C_INT), VALUE  :: extent2
+    END SUBROUTINE cxios_get_axis_bounds
+
+    FUNCTION cxios_is_defined_axis_bounds(axis_hdl) BIND(C)
+      USE ISO_C_BINDING
+      LOGICAL(kind=C_BOOL) :: cxios_is_defined_axis_bounds
+      INTEGER (kind = C_INTPTR_T), VALUE :: axis_hdl
+    END FUNCTION cxios_is_defined_axis_bounds
+
+
     SUBROUTINE cxios_set_axis_data_begin(axis_hdl, data_begin) BIND(C)
       USE ISO_C_BINDING
Index: XIOS/trunk/src/interface/fortran_attr/axisgroup_interface_attr.F90
===================================================================
--- XIOS/trunk/src/interface/fortran_attr/axisgroup_interface_attr.F90	(revision 608)
+++ XIOS/trunk/src/interface/fortran_attr/axisgroup_interface_attr.F90	(revision 609)
@@ -31,4 +31,27 @@
 
 
+    SUBROUTINE cxios_set_axisgroup_bounds(axisgroup_hdl, bounds, extent1, extent2) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE       :: axisgroup_hdl
+      REAL (KIND=C_DOUBLE)     , DIMENSION(*) :: bounds
+      INTEGER (kind = C_INT), VALUE  :: extent1
+      INTEGER (kind = C_INT), VALUE  :: extent2
+    END SUBROUTINE cxios_set_axisgroup_bounds
+
+    SUBROUTINE cxios_get_axisgroup_bounds(axisgroup_hdl, bounds, extent1, extent2) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE       :: axisgroup_hdl
+      REAL (KIND=C_DOUBLE)     , DIMENSION(*) :: bounds
+      INTEGER (kind = C_INT), VALUE  :: extent1
+      INTEGER (kind = C_INT), VALUE  :: extent2
+    END SUBROUTINE cxios_get_axisgroup_bounds
+
+    FUNCTION cxios_is_defined_axisgroup_bounds(axisgroup_hdl) BIND(C)
+      USE ISO_C_BINDING
+      LOGICAL(kind=C_BOOL) :: cxios_is_defined_axisgroup_bounds
+      INTEGER (kind = C_INTPTR_T), VALUE :: axisgroup_hdl
+    END FUNCTION cxios_is_defined_axisgroup_bounds
+
+
     SUBROUTINE cxios_set_axisgroup_data_begin(axisgroup_hdl, data_begin) BIND(C)
       USE ISO_C_BINDING
Index: XIOS/trunk/src/interface/fortran_attr/iaxis_attr.F90
===================================================================
--- XIOS/trunk/src/interface/fortran_attr/iaxis_attr.F90	(revision 608)
+++ XIOS/trunk/src/interface/fortran_attr/iaxis_attr.F90	(revision 609)
@@ -12,6 +12,6 @@
 
   SUBROUTINE xios(set_axis_attr)  &
-    ( axis_id, axis_ref, data_begin, data_index, data_n, ibegin, long_name, mask, name, ni, positive  &
-    , size, standard_name, unit, value, zoom_begin, zoom_end, zoom_size )
+    ( axis_id, axis_ref, bounds, data_begin, data_index, data_n, ibegin, long_name, mask, name, ni  &
+    , positive, size, standard_name, unit, value, zoom_begin, zoom_end, zoom_size )
 
     IMPLICIT NONE
@@ -19,4 +19,5 @@
       CHARACTER(LEN=*), INTENT(IN) ::axis_id
       CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: axis_ref
+      REAL (KIND=8) , OPTIONAL, INTENT(IN) :: bounds(:,:)
       INTEGER  , OPTIONAL, INTENT(IN) :: data_begin
       INTEGER  , OPTIONAL, INTENT(IN) :: data_index(:)
@@ -39,16 +40,17 @@
       CALL xios(get_axis_handle)(axis_id,axis_hdl)
       CALL xios(set_axis_attr_hdl_)   &
-      ( axis_hdl, axis_ref, data_begin, data_index, data_n, ibegin, long_name, mask, name, ni, positive  &
-      , size, standard_name, unit, value, zoom_begin, zoom_end, zoom_size )
+      ( axis_hdl, axis_ref, bounds, data_begin, data_index, data_n, ibegin, long_name, mask, name  &
+      , ni, positive, size, standard_name, unit, value, zoom_begin, zoom_end, zoom_size )
 
   END SUBROUTINE xios(set_axis_attr)
 
   SUBROUTINE xios(set_axis_attr_hdl)  &
-    ( axis_hdl, axis_ref, data_begin, data_index, data_n, ibegin, long_name, mask, name, ni, positive  &
-    , size, standard_name, unit, value, zoom_begin, zoom_end, zoom_size )
+    ( axis_hdl, axis_ref, bounds, data_begin, data_index, data_n, ibegin, long_name, mask, name  &
+    , ni, positive, size, standard_name, unit, value, zoom_begin, zoom_end, zoom_size )
 
     IMPLICIT NONE
       TYPE(txios(axis)) , INTENT(IN) :: axis_hdl
       CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: axis_ref
+      REAL (KIND=8) , OPTIONAL, INTENT(IN) :: bounds(:,:)
       INTEGER  , OPTIONAL, INTENT(IN) :: data_begin
       INTEGER  , OPTIONAL, INTENT(IN) :: data_index(:)
@@ -70,16 +72,18 @@
 
       CALL xios(set_axis_attr_hdl_)  &
-      ( axis_hdl, axis_ref, data_begin, data_index, data_n, ibegin, long_name, mask, name, ni, positive  &
-      , size, standard_name, unit, value, zoom_begin, zoom_end, zoom_size )
+      ( axis_hdl, axis_ref, bounds, data_begin, data_index, data_n, ibegin, long_name, mask, name  &
+      , ni, positive, size, standard_name, unit, value, zoom_begin, zoom_end, zoom_size )
 
   END SUBROUTINE xios(set_axis_attr_hdl)
 
   SUBROUTINE xios(set_axis_attr_hdl_)   &
-    ( axis_hdl, axis_ref_, data_begin_, data_index_, data_n_, ibegin_, long_name_, mask_, name_  &
-    , ni_, positive_, size_, standard_name_, unit_, value_, zoom_begin_, zoom_end_, zoom_size_ )
+    ( axis_hdl, axis_ref_, bounds_, data_begin_, data_index_, data_n_, ibegin_, long_name_, mask_  &
+    , name_, ni_, positive_, size_, standard_name_, unit_, value_, zoom_begin_, zoom_end_, zoom_size_  &
+     )
 
     IMPLICIT NONE
       TYPE(txios(axis)) , INTENT(IN) :: axis_hdl
       CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: axis_ref_
+      REAL (KIND=8) , OPTIONAL, INTENT(IN) :: bounds_(:,:)
       INTEGER  , OPTIONAL, INTENT(IN) :: data_begin_
       INTEGER  , OPTIONAL, INTENT(IN) :: data_index_(:)
@@ -104,4 +108,8 @@
       ENDIF
 
+      IF (PRESENT(bounds_)) THEN
+        CALL cxios_set_axis_bounds(axis_hdl%daddr, bounds_, size(bounds_,1), size(bounds_,2))
+      ENDIF
+
       IF (PRESENT(data_begin_)) THEN
         CALL cxios_set_axis_data_begin(axis_hdl%daddr, data_begin_)
@@ -173,6 +181,6 @@
 
   SUBROUTINE xios(get_axis_attr)  &
-    ( axis_id, axis_ref, data_begin, data_index, data_n, ibegin, long_name, mask, name, ni, positive  &
-    , size, standard_name, unit, value, zoom_begin, zoom_end, zoom_size )
+    ( axis_id, axis_ref, bounds, data_begin, data_index, data_n, ibegin, long_name, mask, name, ni  &
+    , positive, size, standard_name, unit, value, zoom_begin, zoom_end, zoom_size )
 
     IMPLICIT NONE
@@ -180,4 +188,5 @@
       CHARACTER(LEN=*), INTENT(IN) ::axis_id
       CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: axis_ref
+      REAL (KIND=8) , OPTIONAL, INTENT(OUT) :: bounds(:,:)
       INTEGER  , OPTIONAL, INTENT(OUT) :: data_begin
       INTEGER  , OPTIONAL, INTENT(OUT) :: data_index(:)
@@ -200,16 +209,17 @@
       CALL xios(get_axis_handle)(axis_id,axis_hdl)
       CALL xios(get_axis_attr_hdl_)   &
-      ( axis_hdl, axis_ref, data_begin, data_index, data_n, ibegin, long_name, mask, name, ni, positive  &
-      , size, standard_name, unit, value, zoom_begin, zoom_end, zoom_size )
+      ( axis_hdl, axis_ref, bounds, data_begin, data_index, data_n, ibegin, long_name, mask, name  &
+      , ni, positive, size, standard_name, unit, value, zoom_begin, zoom_end, zoom_size )
 
   END SUBROUTINE xios(get_axis_attr)
 
   SUBROUTINE xios(get_axis_attr_hdl)  &
-    ( axis_hdl, axis_ref, data_begin, data_index, data_n, ibegin, long_name, mask, name, ni, positive  &
-    , size, standard_name, unit, value, zoom_begin, zoom_end, zoom_size )
+    ( axis_hdl, axis_ref, bounds, data_begin, data_index, data_n, ibegin, long_name, mask, name  &
+    , ni, positive, size, standard_name, unit, value, zoom_begin, zoom_end, zoom_size )
 
     IMPLICIT NONE
       TYPE(txios(axis)) , INTENT(IN) :: axis_hdl
       CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: axis_ref
+      REAL (KIND=8) , OPTIONAL, INTENT(OUT) :: bounds(:,:)
       INTEGER  , OPTIONAL, INTENT(OUT) :: data_begin
       INTEGER  , OPTIONAL, INTENT(OUT) :: data_index(:)
@@ -231,16 +241,18 @@
 
       CALL xios(get_axis_attr_hdl_)  &
-      ( axis_hdl, axis_ref, data_begin, data_index, data_n, ibegin, long_name, mask, name, ni, positive  &
-      , size, standard_name, unit, value, zoom_begin, zoom_end, zoom_size )
+      ( axis_hdl, axis_ref, bounds, data_begin, data_index, data_n, ibegin, long_name, mask, name  &
+      , ni, positive, size, standard_name, unit, value, zoom_begin, zoom_end, zoom_size )
 
   END SUBROUTINE xios(get_axis_attr_hdl)
 
   SUBROUTINE xios(get_axis_attr_hdl_)   &
-    ( axis_hdl, axis_ref_, data_begin_, data_index_, data_n_, ibegin_, long_name_, mask_, name_  &
-    , ni_, positive_, size_, standard_name_, unit_, value_, zoom_begin_, zoom_end_, zoom_size_ )
+    ( axis_hdl, axis_ref_, bounds_, data_begin_, data_index_, data_n_, ibegin_, long_name_, mask_  &
+    , name_, ni_, positive_, size_, standard_name_, unit_, value_, zoom_begin_, zoom_end_, zoom_size_  &
+     )
 
     IMPLICIT NONE
       TYPE(txios(axis)) , INTENT(IN) :: axis_hdl
       CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: axis_ref_
+      REAL (KIND=8) , OPTIONAL, INTENT(OUT) :: bounds_(:,:)
       INTEGER  , OPTIONAL, INTENT(OUT) :: data_begin_
       INTEGER  , OPTIONAL, INTENT(OUT) :: data_index_(:)
@@ -265,4 +277,8 @@
       ENDIF
 
+      IF (PRESENT(bounds_)) THEN
+        CALL cxios_get_axis_bounds(axis_hdl%daddr, bounds_, size(bounds_,1), size(bounds_,2))
+      ENDIF
+
       IF (PRESENT(data_begin_)) THEN
         CALL cxios_get_axis_data_begin(axis_hdl%daddr, data_begin_)
@@ -334,6 +350,6 @@
 
   SUBROUTINE xios(is_defined_axis_attr)  &
-    ( axis_id, axis_ref, data_begin, data_index, data_n, ibegin, long_name, mask, name, ni, positive  &
-    , size, standard_name, unit, value, zoom_begin, zoom_end, zoom_size )
+    ( axis_id, axis_ref, bounds, data_begin, data_index, data_n, ibegin, long_name, mask, name, ni  &
+    , positive, size, standard_name, unit, value, zoom_begin, zoom_end, zoom_size )
 
     IMPLICIT NONE
@@ -342,4 +358,6 @@
       LOGICAL, OPTIONAL, INTENT(OUT) :: axis_ref
       LOGICAL(KIND=C_BOOL) :: axis_ref_tmp
+      LOGICAL, OPTIONAL, INTENT(OUT) :: bounds
+      LOGICAL(KIND=C_BOOL) :: bounds_tmp
       LOGICAL, OPTIONAL, INTENT(OUT) :: data_begin
       LOGICAL(KIND=C_BOOL) :: data_begin_tmp
@@ -377,12 +395,12 @@
       CALL xios(get_axis_handle)(axis_id,axis_hdl)
       CALL xios(is_defined_axis_attr_hdl_)   &
-      ( axis_hdl, axis_ref, data_begin, data_index, data_n, ibegin, long_name, mask, name, ni, positive  &
-      , size, standard_name, unit, value, zoom_begin, zoom_end, zoom_size )
+      ( axis_hdl, axis_ref, bounds, data_begin, data_index, data_n, ibegin, long_name, mask, name  &
+      , ni, positive, size, standard_name, unit, value, zoom_begin, zoom_end, zoom_size )
 
   END SUBROUTINE xios(is_defined_axis_attr)
 
   SUBROUTINE xios(is_defined_axis_attr_hdl)  &
-    ( axis_hdl, axis_ref, data_begin, data_index, data_n, ibegin, long_name, mask, name, ni, positive  &
-    , size, standard_name, unit, value, zoom_begin, zoom_end, zoom_size )
+    ( axis_hdl, axis_ref, bounds, data_begin, data_index, data_n, ibegin, long_name, mask, name  &
+    , ni, positive, size, standard_name, unit, value, zoom_begin, zoom_end, zoom_size )
 
     IMPLICIT NONE
@@ -390,4 +408,6 @@
       LOGICAL, OPTIONAL, INTENT(OUT) :: axis_ref
       LOGICAL(KIND=C_BOOL) :: axis_ref_tmp
+      LOGICAL, OPTIONAL, INTENT(OUT) :: bounds
+      LOGICAL(KIND=C_BOOL) :: bounds_tmp
       LOGICAL, OPTIONAL, INTENT(OUT) :: data_begin
       LOGICAL(KIND=C_BOOL) :: data_begin_tmp
@@ -424,12 +444,13 @@
 
       CALL xios(is_defined_axis_attr_hdl_)  &
-      ( axis_hdl, axis_ref, data_begin, data_index, data_n, ibegin, long_name, mask, name, ni, positive  &
-      , size, standard_name, unit, value, zoom_begin, zoom_end, zoom_size )
+      ( axis_hdl, axis_ref, bounds, data_begin, data_index, data_n, ibegin, long_name, mask, name  &
+      , ni, positive, size, standard_name, unit, value, zoom_begin, zoom_end, zoom_size )
 
   END SUBROUTINE xios(is_defined_axis_attr_hdl)
 
   SUBROUTINE xios(is_defined_axis_attr_hdl_)   &
-    ( axis_hdl, axis_ref_, data_begin_, data_index_, data_n_, ibegin_, long_name_, mask_, name_  &
-    , ni_, positive_, size_, standard_name_, unit_, value_, zoom_begin_, zoom_end_, zoom_size_ )
+    ( axis_hdl, axis_ref_, bounds_, data_begin_, data_index_, data_n_, ibegin_, long_name_, mask_  &
+    , name_, ni_, positive_, size_, standard_name_, unit_, value_, zoom_begin_, zoom_end_, zoom_size_  &
+     )
 
     IMPLICIT NONE
@@ -437,4 +458,6 @@
       LOGICAL, OPTIONAL, INTENT(OUT) :: axis_ref_
       LOGICAL(KIND=C_BOOL) :: axis_ref__tmp
+      LOGICAL, OPTIONAL, INTENT(OUT) :: bounds_
+      LOGICAL(KIND=C_BOOL) :: bounds__tmp
       LOGICAL, OPTIONAL, INTENT(OUT) :: data_begin_
       LOGICAL(KIND=C_BOOL) :: data_begin__tmp
@@ -475,4 +498,9 @@
       ENDIF
 
+      IF (PRESENT(bounds_)) THEN
+        bounds__tmp = cxios_is_defined_axis_bounds(axis_hdl%daddr)
+        bounds_ = bounds__tmp
+      ENDIF
+
       IF (PRESENT(data_begin_)) THEN
         data_begin__tmp = cxios_is_defined_axis_data_begin(axis_hdl%daddr)
Index: XIOS/trunk/src/interface/fortran_attr/iaxisgroup_attr.F90
===================================================================
--- XIOS/trunk/src/interface/fortran_attr/iaxisgroup_attr.F90	(revision 608)
+++ XIOS/trunk/src/interface/fortran_attr/iaxisgroup_attr.F90	(revision 609)
@@ -12,6 +12,7 @@
 
   SUBROUTINE xios(set_axisgroup_attr)  &
-    ( axisgroup_id, axis_ref, data_begin, data_index, data_n, group_ref, ibegin, long_name, mask  &
-    , name, ni, positive, size, standard_name, unit, value, zoom_begin, zoom_end, zoom_size )
+    ( axisgroup_id, axis_ref, bounds, data_begin, data_index, data_n, group_ref, ibegin, long_name  &
+    , mask, name, ni, positive, size, standard_name, unit, value, zoom_begin, zoom_end, zoom_size  &
+     )
 
     IMPLICIT NONE
@@ -19,4 +20,5 @@
       CHARACTER(LEN=*), INTENT(IN) ::axisgroup_id
       CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: axis_ref
+      REAL (KIND=8) , OPTIONAL, INTENT(IN) :: bounds(:,:)
       INTEGER  , OPTIONAL, INTENT(IN) :: data_begin
       INTEGER  , OPTIONAL, INTENT(IN) :: data_index(:)
@@ -40,16 +42,19 @@
       CALL xios(get_axisgroup_handle)(axisgroup_id,axisgroup_hdl)
       CALL xios(set_axisgroup_attr_hdl_)   &
-      ( axisgroup_hdl, axis_ref, data_begin, data_index, data_n, group_ref, ibegin, long_name, mask  &
-      , name, ni, positive, size, standard_name, unit, value, zoom_begin, zoom_end, zoom_size )
+      ( axisgroup_hdl, axis_ref, bounds, data_begin, data_index, data_n, group_ref, ibegin, long_name  &
+      , mask, name, ni, positive, size, standard_name, unit, value, zoom_begin, zoom_end, zoom_size  &
+       )
 
   END SUBROUTINE xios(set_axisgroup_attr)
 
   SUBROUTINE xios(set_axisgroup_attr_hdl)  &
-    ( axisgroup_hdl, axis_ref, data_begin, data_index, data_n, group_ref, ibegin, long_name, mask  &
-    , name, ni, positive, size, standard_name, unit, value, zoom_begin, zoom_end, zoom_size )
+    ( axisgroup_hdl, axis_ref, bounds, data_begin, data_index, data_n, group_ref, ibegin, long_name  &
+    , mask, name, ni, positive, size, standard_name, unit, value, zoom_begin, zoom_end, zoom_size  &
+     )
 
     IMPLICIT NONE
       TYPE(txios(axisgroup)) , INTENT(IN) :: axisgroup_hdl
       CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: axis_ref
+      REAL (KIND=8) , OPTIONAL, INTENT(IN) :: bounds(:,:)
       INTEGER  , OPTIONAL, INTENT(IN) :: data_begin
       INTEGER  , OPTIONAL, INTENT(IN) :: data_index(:)
@@ -72,17 +77,19 @@
 
       CALL xios(set_axisgroup_attr_hdl_)  &
-      ( axisgroup_hdl, axis_ref, data_begin, data_index, data_n, group_ref, ibegin, long_name, mask  &
-      , name, ni, positive, size, standard_name, unit, value, zoom_begin, zoom_end, zoom_size )
+      ( axisgroup_hdl, axis_ref, bounds, data_begin, data_index, data_n, group_ref, ibegin, long_name  &
+      , mask, name, ni, positive, size, standard_name, unit, value, zoom_begin, zoom_end, zoom_size  &
+       )
 
   END SUBROUTINE xios(set_axisgroup_attr_hdl)
 
   SUBROUTINE xios(set_axisgroup_attr_hdl_)   &
-    ( axisgroup_hdl, axis_ref_, data_begin_, data_index_, data_n_, group_ref_, ibegin_, long_name_  &
-    , mask_, name_, ni_, positive_, size_, standard_name_, unit_, value_, zoom_begin_, zoom_end_  &
-    , zoom_size_ )
+    ( axisgroup_hdl, axis_ref_, bounds_, data_begin_, data_index_, data_n_, group_ref_, ibegin_  &
+    , long_name_, mask_, name_, ni_, positive_, size_, standard_name_, unit_, value_, zoom_begin_  &
+    , zoom_end_, zoom_size_ )
 
     IMPLICIT NONE
       TYPE(txios(axisgroup)) , INTENT(IN) :: axisgroup_hdl
       CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: axis_ref_
+      REAL (KIND=8) , OPTIONAL, INTENT(IN) :: bounds_(:,:)
       INTEGER  , OPTIONAL, INTENT(IN) :: data_begin_
       INTEGER  , OPTIONAL, INTENT(IN) :: data_index_(:)
@@ -108,4 +115,8 @@
       ENDIF
 
+      IF (PRESENT(bounds_)) THEN
+        CALL cxios_set_axisgroup_bounds(axisgroup_hdl%daddr, bounds_, size(bounds_,1), size(bounds_,2))
+      ENDIF
+
       IF (PRESENT(data_begin_)) THEN
         CALL cxios_set_axisgroup_data_begin(axisgroup_hdl%daddr, data_begin_)
@@ -181,6 +192,7 @@
 
   SUBROUTINE xios(get_axisgroup_attr)  &
-    ( axisgroup_id, axis_ref, data_begin, data_index, data_n, group_ref, ibegin, long_name, mask  &
-    , name, ni, positive, size, standard_name, unit, value, zoom_begin, zoom_end, zoom_size )
+    ( axisgroup_id, axis_ref, bounds, data_begin, data_index, data_n, group_ref, ibegin, long_name  &
+    , mask, name, ni, positive, size, standard_name, unit, value, zoom_begin, zoom_end, zoom_size  &
+     )
 
     IMPLICIT NONE
@@ -188,4 +200,5 @@
       CHARACTER(LEN=*), INTENT(IN) ::axisgroup_id
       CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: axis_ref
+      REAL (KIND=8) , OPTIONAL, INTENT(OUT) :: bounds(:,:)
       INTEGER  , OPTIONAL, INTENT(OUT) :: data_begin
       INTEGER  , OPTIONAL, INTENT(OUT) :: data_index(:)
@@ -209,16 +222,19 @@
       CALL xios(get_axisgroup_handle)(axisgroup_id,axisgroup_hdl)
       CALL xios(get_axisgroup_attr_hdl_)   &
-      ( axisgroup_hdl, axis_ref, data_begin, data_index, data_n, group_ref, ibegin, long_name, mask  &
-      , name, ni, positive, size, standard_name, unit, value, zoom_begin, zoom_end, zoom_size )
+      ( axisgroup_hdl, axis_ref, bounds, data_begin, data_index, data_n, group_ref, ibegin, long_name  &
+      , mask, name, ni, positive, size, standard_name, unit, value, zoom_begin, zoom_end, zoom_size  &
+       )
 
   END SUBROUTINE xios(get_axisgroup_attr)
 
   SUBROUTINE xios(get_axisgroup_attr_hdl)  &
-    ( axisgroup_hdl, axis_ref, data_begin, data_index, data_n, group_ref, ibegin, long_name, mask  &
-    , name, ni, positive, size, standard_name, unit, value, zoom_begin, zoom_end, zoom_size )
+    ( axisgroup_hdl, axis_ref, bounds, data_begin, data_index, data_n, group_ref, ibegin, long_name  &
+    , mask, name, ni, positive, size, standard_name, unit, value, zoom_begin, zoom_end, zoom_size  &
+     )
 
     IMPLICIT NONE
       TYPE(txios(axisgroup)) , INTENT(IN) :: axisgroup_hdl
       CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: axis_ref
+      REAL (KIND=8) , OPTIONAL, INTENT(OUT) :: bounds(:,:)
       INTEGER  , OPTIONAL, INTENT(OUT) :: data_begin
       INTEGER  , OPTIONAL, INTENT(OUT) :: data_index(:)
@@ -241,17 +257,19 @@
 
       CALL xios(get_axisgroup_attr_hdl_)  &
-      ( axisgroup_hdl, axis_ref, data_begin, data_index, data_n, group_ref, ibegin, long_name, mask  &
-      , name, ni, positive, size, standard_name, unit, value, zoom_begin, zoom_end, zoom_size )
+      ( axisgroup_hdl, axis_ref, bounds, data_begin, data_index, data_n, group_ref, ibegin, long_name  &
+      , mask, name, ni, positive, size, standard_name, unit, value, zoom_begin, zoom_end, zoom_size  &
+       )
 
   END SUBROUTINE xios(get_axisgroup_attr_hdl)
 
   SUBROUTINE xios(get_axisgroup_attr_hdl_)   &
-    ( axisgroup_hdl, axis_ref_, data_begin_, data_index_, data_n_, group_ref_, ibegin_, long_name_  &
-    , mask_, name_, ni_, positive_, size_, standard_name_, unit_, value_, zoom_begin_, zoom_end_  &
-    , zoom_size_ )
+    ( axisgroup_hdl, axis_ref_, bounds_, data_begin_, data_index_, data_n_, group_ref_, ibegin_  &
+    , long_name_, mask_, name_, ni_, positive_, size_, standard_name_, unit_, value_, zoom_begin_  &
+    , zoom_end_, zoom_size_ )
 
     IMPLICIT NONE
       TYPE(txios(axisgroup)) , INTENT(IN) :: axisgroup_hdl
       CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: axis_ref_
+      REAL (KIND=8) , OPTIONAL, INTENT(OUT) :: bounds_(:,:)
       INTEGER  , OPTIONAL, INTENT(OUT) :: data_begin_
       INTEGER  , OPTIONAL, INTENT(OUT) :: data_index_(:)
@@ -277,4 +295,8 @@
       ENDIF
 
+      IF (PRESENT(bounds_)) THEN
+        CALL cxios_get_axisgroup_bounds(axisgroup_hdl%daddr, bounds_, size(bounds_,1), size(bounds_,2))
+      ENDIF
+
       IF (PRESENT(data_begin_)) THEN
         CALL cxios_get_axisgroup_data_begin(axisgroup_hdl%daddr, data_begin_)
@@ -350,6 +372,7 @@
 
   SUBROUTINE xios(is_defined_axisgroup_attr)  &
-    ( axisgroup_id, axis_ref, data_begin, data_index, data_n, group_ref, ibegin, long_name, mask  &
-    , name, ni, positive, size, standard_name, unit, value, zoom_begin, zoom_end, zoom_size )
+    ( axisgroup_id, axis_ref, bounds, data_begin, data_index, data_n, group_ref, ibegin, long_name  &
+    , mask, name, ni, positive, size, standard_name, unit, value, zoom_begin, zoom_end, zoom_size  &
+     )
 
     IMPLICIT NONE
@@ -358,4 +381,6 @@
       LOGICAL, OPTIONAL, INTENT(OUT) :: axis_ref
       LOGICAL(KIND=C_BOOL) :: axis_ref_tmp
+      LOGICAL, OPTIONAL, INTENT(OUT) :: bounds
+      LOGICAL(KIND=C_BOOL) :: bounds_tmp
       LOGICAL, OPTIONAL, INTENT(OUT) :: data_begin
       LOGICAL(KIND=C_BOOL) :: data_begin_tmp
@@ -395,12 +420,14 @@
       CALL xios(get_axisgroup_handle)(axisgroup_id,axisgroup_hdl)
       CALL xios(is_defined_axisgroup_attr_hdl_)   &
-      ( axisgroup_hdl, axis_ref, data_begin, data_index, data_n, group_ref, ibegin, long_name, mask  &
-      , name, ni, positive, size, standard_name, unit, value, zoom_begin, zoom_end, zoom_size )
+      ( axisgroup_hdl, axis_ref, bounds, data_begin, data_index, data_n, group_ref, ibegin, long_name  &
+      , mask, name, ni, positive, size, standard_name, unit, value, zoom_begin, zoom_end, zoom_size  &
+       )
 
   END SUBROUTINE xios(is_defined_axisgroup_attr)
 
   SUBROUTINE xios(is_defined_axisgroup_attr_hdl)  &
-    ( axisgroup_hdl, axis_ref, data_begin, data_index, data_n, group_ref, ibegin, long_name, mask  &
-    , name, ni, positive, size, standard_name, unit, value, zoom_begin, zoom_end, zoom_size )
+    ( axisgroup_hdl, axis_ref, bounds, data_begin, data_index, data_n, group_ref, ibegin, long_name  &
+    , mask, name, ni, positive, size, standard_name, unit, value, zoom_begin, zoom_end, zoom_size  &
+     )
 
     IMPLICIT NONE
@@ -408,4 +435,6 @@
       LOGICAL, OPTIONAL, INTENT(OUT) :: axis_ref
       LOGICAL(KIND=C_BOOL) :: axis_ref_tmp
+      LOGICAL, OPTIONAL, INTENT(OUT) :: bounds
+      LOGICAL(KIND=C_BOOL) :: bounds_tmp
       LOGICAL, OPTIONAL, INTENT(OUT) :: data_begin
       LOGICAL(KIND=C_BOOL) :: data_begin_tmp
@@ -444,13 +473,14 @@
 
       CALL xios(is_defined_axisgroup_attr_hdl_)  &
-      ( axisgroup_hdl, axis_ref, data_begin, data_index, data_n, group_ref, ibegin, long_name, mask  &
-      , name, ni, positive, size, standard_name, unit, value, zoom_begin, zoom_end, zoom_size )
+      ( axisgroup_hdl, axis_ref, bounds, data_begin, data_index, data_n, group_ref, ibegin, long_name  &
+      , mask, name, ni, positive, size, standard_name, unit, value, zoom_begin, zoom_end, zoom_size  &
+       )
 
   END SUBROUTINE xios(is_defined_axisgroup_attr_hdl)
 
   SUBROUTINE xios(is_defined_axisgroup_attr_hdl_)   &
-    ( axisgroup_hdl, axis_ref_, data_begin_, data_index_, data_n_, group_ref_, ibegin_, long_name_  &
-    , mask_, name_, ni_, positive_, size_, standard_name_, unit_, value_, zoom_begin_, zoom_end_  &
-    , zoom_size_ )
+    ( axisgroup_hdl, axis_ref_, bounds_, data_begin_, data_index_, data_n_, group_ref_, ibegin_  &
+    , long_name_, mask_, name_, ni_, positive_, size_, standard_name_, unit_, value_, zoom_begin_  &
+    , zoom_end_, zoom_size_ )
 
     IMPLICIT NONE
@@ -458,4 +488,6 @@
       LOGICAL, OPTIONAL, INTENT(OUT) :: axis_ref_
       LOGICAL(KIND=C_BOOL) :: axis_ref__tmp
+      LOGICAL, OPTIONAL, INTENT(OUT) :: bounds_
+      LOGICAL(KIND=C_BOOL) :: bounds__tmp
       LOGICAL, OPTIONAL, INTENT(OUT) :: data_begin_
       LOGICAL(KIND=C_BOOL) :: data_begin__tmp
@@ -498,4 +530,9 @@
       ENDIF
 
+      IF (PRESENT(bounds_)) THEN
+        bounds__tmp = cxios_is_defined_axisgroup_bounds(axisgroup_hdl%daddr)
+        bounds_ = bounds__tmp
+      ENDIF
+
       IF (PRESENT(data_begin_)) THEN
         data_begin__tmp = cxios_is_defined_axisgroup_data_begin(axisgroup_hdl%daddr)
