Index: XIOS/branchs/xios-1.0/src/config/axis_attribute.conf
===================================================================
--- XIOS/branchs/xios-1.0/src/config/axis_attribute.conf	(revision 608)
+++ XIOS/branchs/xios-1.0/src/config/axis_attribute.conf	(revision 609)
@@ -10,5 +10,5 @@
 DECLARE_ATTRIBUTE(int,       zoom_size)
 DECLARE_ENUM2(positive, up, down)
+
 DECLARE_ARRAY(double, 1, value)
-
-
+DECLARE_ARRAY(double, 2 , bounds)
Index: XIOS/branchs/xios-1.0/src/interface/c_attr/icaxis_attr.cpp
===================================================================
--- XIOS/branchs/xios-1.0/src/interface/c_attr/icaxis_attr.cpp	(revision 608)
+++ XIOS/branchs/xios-1.0/src/interface/c_attr/icaxis_attr.cpp	(revision 609)
@@ -17,4 +17,31 @@
   typedef xios::CAxis*  axis_Ptr;
   
+  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());
+    axis_hdl->sendAttributToServer(axis_hdl->bounds);
+     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_long_name(axis_Ptr axis_hdl, const char * long_name, int long_name_size)
   {
Index: XIOS/branchs/xios-1.0/src/interface/c_attr/icaxisgroup_attr.cpp
===================================================================
--- XIOS/branchs/xios-1.0/src/interface/c_attr/icaxisgroup_attr.cpp	(revision 608)
+++ XIOS/branchs/xios-1.0/src/interface/c_attr/icaxisgroup_attr.cpp	(revision 609)
@@ -17,4 +17,31 @@
   typedef xios::CAxisGroup*  axisgroup_Ptr;
   
+  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());
+    axisgroup_hdl->sendAttributToServer(axisgroup_hdl->bounds);
+     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_group_ref(axisgroup_Ptr axisgroup_hdl, const char * group_ref, int group_ref_size)
   {
Index: XIOS/branchs/xios-1.0/src/interface/fortran_attr/axis_interface_attr.f90
===================================================================
--- XIOS/branchs/xios-1.0/src/interface/fortran_attr/axis_interface_attr.f90	(revision 608)
+++ XIOS/branchs/xios-1.0/src/interface/fortran_attr/axis_interface_attr.f90	(revision 609)
@@ -9,4 +9,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_long_name(axis_hdl, long_name, long_name_size) BIND(C)
       USE ISO_C_BINDING
Index: XIOS/branchs/xios-1.0/src/interface/fortran_attr/axisgroup_interface_attr.f90
===================================================================
--- XIOS/branchs/xios-1.0/src/interface/fortran_attr/axisgroup_interface_attr.f90	(revision 608)
+++ XIOS/branchs/xios-1.0/src/interface/fortran_attr/axisgroup_interface_attr.f90	(revision 609)
@@ -9,4 +9,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_group_ref(axisgroup_hdl, group_ref, group_ref_size) BIND(C)
       USE ISO_C_BINDING
Index: XIOS/branchs/xios-1.0/src/interface/fortran_attr/iaxis_attr.F90
===================================================================
--- XIOS/branchs/xios-1.0/src/interface/fortran_attr/iaxis_attr.F90	(revision 608)
+++ XIOS/branchs/xios-1.0/src/interface/fortran_attr/iaxis_attr.F90	(revision 609)
@@ -12,5 +12,5 @@
   
   SUBROUTINE xios(set_axis_attr)  &
-    ( axis_id, long_name, name, positive, size, standard_name, unit, value, zoom_begin, zoom_end  &
+    ( axis_id, bounds, long_name, name, positive, size, standard_name, unit, value, zoom_begin, zoom_end  &
     , zoom_size )
     
@@ -18,4 +18,5 @@
       TYPE(txios(axis))  :: axis_hdl
       CHARACTER(LEN=*), INTENT(IN) ::axis_id
+      REAL (KIND=8) , OPTIONAL, INTENT(IN) :: bounds(:,:)
       CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: long_name
       CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: name
@@ -31,15 +32,16 @@
       CALL xios(get_axis_handle)(axis_id,axis_hdl)
       CALL xios(set_axis_attr_hdl_)   &
-      ( axis_hdl, long_name, name, positive, size, standard_name, unit, value, zoom_begin, zoom_end  &
-      , zoom_size )
+      ( axis_hdl, bounds, long_name, name, 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, long_name, name, positive, size, standard_name, unit, value, zoom_begin, zoom_end  &
-    , zoom_size )
-    
-    IMPLICIT NONE
-      TYPE(txios(axis)) , INTENT(IN) :: axis_hdl
+    ( axis_hdl, bounds, long_name, name, positive, size, standard_name, unit, value, zoom_begin  &
+    , zoom_end, zoom_size )
+    
+    IMPLICIT NONE
+      TYPE(txios(axis)) , INTENT(IN) :: axis_hdl
+      REAL (KIND=8) , OPTIONAL, INTENT(IN) :: bounds(:,:)
       CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: long_name
       CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: name
@@ -54,15 +56,16 @@
       
       CALL xios(set_axis_attr_hdl_)  &
-      ( axis_hdl, long_name, name, positive, size, standard_name, unit, value, zoom_begin, zoom_end  &
-      , zoom_size )
+      ( axis_hdl, bounds, long_name, name, 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, long_name_, name_, positive_, size_, standard_name_, unit_, value_, zoom_begin_  &
+    ( axis_hdl, bounds_, long_name_, name_, positive_, size_, standard_name_, unit_, value_, zoom_begin_  &
     , zoom_end_, zoom_size_ )
     
     IMPLICIT NONE
       TYPE(txios(axis)) , INTENT(IN) :: axis_hdl
+      REAL (KIND=8) , OPTIONAL, INTENT(IN) :: bounds_(:,:)
       CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: long_name_
       CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: name_
@@ -76,4 +79,8 @@
       INTEGER  , OPTIONAL, INTENT(IN) :: zoom_size_
       
+      IF (PRESENT(bounds_)) THEN
+        CALL cxios_set_axis_bounds(axis_hdl%daddr, bounds_,size(bounds_,1),size(bounds_,2))
+      ENDIF
+      
       IF (PRESENT(long_name_)) THEN
         CALL cxios_set_axis_long_name(axis_hdl%daddr, long_name_, len(long_name_))
@@ -121,5 +128,5 @@
   
   SUBROUTINE xios(get_axis_attr)  &
-    ( axis_id, long_name, name, positive, size, standard_name, unit, value, zoom_begin, zoom_end  &
+    ( axis_id, bounds, long_name, name, positive, size, standard_name, unit, value, zoom_begin, zoom_end  &
     , zoom_size )
     
@@ -127,4 +134,5 @@
       TYPE(txios(axis))  :: axis_hdl
       CHARACTER(LEN=*), INTENT(IN) ::axis_id
+      REAL (KIND=8) , OPTIONAL, INTENT(OUT) :: bounds(:,:)
       CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: long_name
       CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: name
@@ -140,15 +148,16 @@
       CALL xios(get_axis_handle)(axis_id,axis_hdl)
       CALL xios(get_axis_attr_hdl_)   &
-      ( axis_hdl, long_name, name, positive, size, standard_name, unit, value, zoom_begin, zoom_end  &
-      , zoom_size )
+      ( axis_hdl, bounds, long_name, name, 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, long_name, name, positive, size, standard_name, unit, value, zoom_begin, zoom_end  &
-    , zoom_size )
-    
-    IMPLICIT NONE
-      TYPE(txios(axis)) , INTENT(IN) :: axis_hdl
+    ( axis_hdl, bounds, long_name, name, positive, size, standard_name, unit, value, zoom_begin  &
+    , zoom_end, zoom_size )
+    
+    IMPLICIT NONE
+      TYPE(txios(axis)) , INTENT(IN) :: axis_hdl
+      REAL (KIND=8) , OPTIONAL, INTENT(OUT) :: bounds(:,:)
       CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: long_name
       CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: name
@@ -163,15 +172,16 @@
       
       CALL xios(get_axis_attr_hdl_)  &
-      ( axis_hdl, long_name, name, positive, size, standard_name, unit, value, zoom_begin, zoom_end  &
-      , zoom_size )
+      ( axis_hdl, bounds, long_name, name, 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, long_name_, name_, positive_, size_, standard_name_, unit_, value_, zoom_begin_  &
+    ( axis_hdl, bounds_, long_name_, name_, positive_, size_, standard_name_, unit_, value_, zoom_begin_  &
     , zoom_end_, zoom_size_ )
     
     IMPLICIT NONE
       TYPE(txios(axis)) , INTENT(IN) :: axis_hdl
+      REAL (KIND=8) , OPTIONAL, INTENT(OUT) :: bounds_(:,:)
       CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: long_name_
       CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: name_
@@ -185,4 +195,8 @@
       INTEGER  , OPTIONAL, INTENT(OUT) :: zoom_size_
       
+      IF (PRESENT(bounds_)) THEN
+        CALL cxios_get_axis_bounds(axis_hdl%daddr, bounds_,size(bounds_,1),size(bounds_,2))
+      ENDIF
+      
       IF (PRESENT(long_name_)) THEN
         CALL cxios_get_axis_long_name(axis_hdl%daddr, long_name_, len(long_name_))
@@ -230,5 +244,5 @@
   
   SUBROUTINE xios(is_defined_axis_attr)  &
-    ( axis_id, long_name, name, positive, size, standard_name, unit, value, zoom_begin, zoom_end  &
+    ( axis_id, bounds, long_name, name, positive, size, standard_name, unit, value, zoom_begin, zoom_end  &
     , zoom_size )
     
@@ -236,4 +250,6 @@
       TYPE(txios(axis))  :: axis_hdl
       CHARACTER(LEN=*), INTENT(IN) ::axis_id
+      LOGICAL, OPTIONAL, INTENT(OUT) :: bounds
+      LOGICAL(KIND=C_BOOL) :: bounds_tmp
       LOGICAL, OPTIONAL, INTENT(OUT) :: long_name
       LOGICAL(KIND=C_BOOL) :: long_name_tmp
@@ -259,15 +275,17 @@
       CALL xios(get_axis_handle)(axis_id,axis_hdl)
       CALL xios(is_defined_axis_attr_hdl_)   &
-      ( axis_hdl, long_name, name, positive, size, standard_name, unit, value, zoom_begin, zoom_end  &
-      , zoom_size )
+      ( axis_hdl, bounds, long_name, name, 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, long_name, name, positive, size, standard_name, unit, value, zoom_begin, zoom_end  &
-    , zoom_size )
-    
-    IMPLICIT NONE
-      TYPE(txios(axis)) , INTENT(IN) :: axis_hdl
+    ( axis_hdl, bounds, long_name, name, positive, size, standard_name, unit, value, zoom_begin  &
+    , zoom_end, zoom_size )
+    
+    IMPLICIT NONE
+      TYPE(txios(axis)) , INTENT(IN) :: axis_hdl
+      LOGICAL, OPTIONAL, INTENT(OUT) :: bounds
+      LOGICAL(KIND=C_BOOL) :: bounds_tmp
       LOGICAL, OPTIONAL, INTENT(OUT) :: long_name
       LOGICAL(KIND=C_BOOL) :: long_name_tmp
@@ -292,15 +310,17 @@
       
       CALL xios(is_defined_axis_attr_hdl_)  &
-      ( axis_hdl, long_name, name, positive, size, standard_name, unit, value, zoom_begin, zoom_end  &
-      , zoom_size )
+      ( axis_hdl, bounds, long_name, name, 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, long_name_, name_, positive_, size_, standard_name_, unit_, value_, zoom_begin_  &
+    ( axis_hdl, bounds_, long_name_, name_, positive_, size_, standard_name_, unit_, value_, zoom_begin_  &
     , zoom_end_, zoom_size_ )
     
     IMPLICIT NONE
       TYPE(txios(axis)) , INTENT(IN) :: axis_hdl
+      LOGICAL, OPTIONAL, INTENT(OUT) :: bounds_
+      LOGICAL(KIND=C_BOOL) :: bounds__tmp
       LOGICAL, OPTIONAL, INTENT(OUT) :: long_name_
       LOGICAL(KIND=C_BOOL) :: long_name__tmp
@@ -324,4 +344,9 @@
       LOGICAL(KIND=C_BOOL) :: zoom_size__tmp
       
+      IF (PRESENT(bounds_)) THEN
+        bounds__tmp=cxios_is_defined_axis_bounds(axis_hdl%daddr)
+        bounds_=bounds__tmp
+      ENDIF
+      
       IF (PRESENT(long_name_)) THEN
         long_name__tmp=cxios_is_defined_axis_long_name(axis_hdl%daddr)
Index: XIOS/branchs/xios-1.0/src/interface/fortran_attr/iaxisgroup_attr.F90
===================================================================
--- XIOS/branchs/xios-1.0/src/interface/fortran_attr/iaxisgroup_attr.F90	(revision 608)
+++ XIOS/branchs/xios-1.0/src/interface/fortran_attr/iaxisgroup_attr.F90	(revision 609)
@@ -12,10 +12,11 @@
   
   SUBROUTINE xios(set_axisgroup_attr)  &
-    ( axisgroup_id, group_ref, long_name, name, positive, size, standard_name, unit, value, zoom_begin  &
-    , zoom_end, zoom_size )
+    ( axisgroup_id, bounds, group_ref, long_name, name, positive, size, standard_name, unit, value  &
+    , zoom_begin, zoom_end, zoom_size )
     
     IMPLICIT NONE
       TYPE(txios(axisgroup))  :: axisgroup_hdl
       CHARACTER(LEN=*), INTENT(IN) ::axisgroup_id
+      REAL (KIND=8) , OPTIONAL, INTENT(IN) :: bounds(:,:)
       CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: group_ref
       CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: long_name
@@ -32,15 +33,16 @@
       CALL xios(get_axisgroup_handle)(axisgroup_id,axisgroup_hdl)
       CALL xios(set_axisgroup_attr_hdl_)   &
-      ( axisgroup_hdl, group_ref, long_name, name, positive, size, standard_name, unit, value, zoom_begin  &
-      , zoom_end, zoom_size )
+      ( axisgroup_hdl, bounds, group_ref, long_name, name, 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, group_ref, long_name, name, positive, size, standard_name, unit, value, zoom_begin  &
-    , zoom_end, zoom_size )
-    
-    IMPLICIT NONE
-      TYPE(txios(axisgroup)) , INTENT(IN) :: axisgroup_hdl
+    ( axisgroup_hdl, bounds, group_ref, long_name, name, positive, size, standard_name, unit, value  &
+    , zoom_begin, zoom_end, zoom_size )
+    
+    IMPLICIT NONE
+      TYPE(txios(axisgroup)) , INTENT(IN) :: axisgroup_hdl
+      REAL (KIND=8) , OPTIONAL, INTENT(IN) :: bounds(:,:)
       CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: group_ref
       CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: long_name
@@ -56,15 +58,16 @@
       
       CALL xios(set_axisgroup_attr_hdl_)  &
-      ( axisgroup_hdl, group_ref, long_name, name, positive, size, standard_name, unit, value, zoom_begin  &
-      , zoom_end, zoom_size )
+      ( axisgroup_hdl, bounds, group_ref, long_name, name, 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, group_ref_, long_name_, name_, positive_, size_, standard_name_, unit_, value_  &
-    , zoom_begin_, zoom_end_, zoom_size_ )
-    
-    IMPLICIT NONE
-      TYPE(txios(axisgroup)) , INTENT(IN) :: axisgroup_hdl
+    ( axisgroup_hdl, bounds_, group_ref_, long_name_, name_, positive_, size_, standard_name_, unit_  &
+    , value_, zoom_begin_, zoom_end_, zoom_size_ )
+    
+    IMPLICIT NONE
+      TYPE(txios(axisgroup)) , INTENT(IN) :: axisgroup_hdl
+      REAL (KIND=8) , OPTIONAL, INTENT(IN) :: bounds_(:,:)
       CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: group_ref_
       CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: long_name_
@@ -79,4 +82,8 @@
       INTEGER  , OPTIONAL, INTENT(IN) :: zoom_size_
       
+      IF (PRESENT(bounds_)) THEN
+        CALL cxios_set_axisgroup_bounds(axisgroup_hdl%daddr, bounds_,size(bounds_,1),size(bounds_,2))
+      ENDIF
+      
       IF (PRESENT(group_ref_)) THEN
         CALL cxios_set_axisgroup_group_ref(axisgroup_hdl%daddr, group_ref_, len(group_ref_))
@@ -128,10 +135,11 @@
   
   SUBROUTINE xios(get_axisgroup_attr)  &
-    ( axisgroup_id, group_ref, long_name, name, positive, size, standard_name, unit, value, zoom_begin  &
-    , zoom_end, zoom_size )
+    ( axisgroup_id, bounds, group_ref, long_name, name, positive, size, standard_name, unit, value  &
+    , zoom_begin, zoom_end, zoom_size )
     
     IMPLICIT NONE
       TYPE(txios(axisgroup))  :: axisgroup_hdl
       CHARACTER(LEN=*), INTENT(IN) ::axisgroup_id
+      REAL (KIND=8) , OPTIONAL, INTENT(OUT) :: bounds(:,:)
       CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: group_ref
       CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: long_name
@@ -148,15 +156,16 @@
       CALL xios(get_axisgroup_handle)(axisgroup_id,axisgroup_hdl)
       CALL xios(get_axisgroup_attr_hdl_)   &
-      ( axisgroup_hdl, group_ref, long_name, name, positive, size, standard_name, unit, value, zoom_begin  &
-      , zoom_end, zoom_size )
+      ( axisgroup_hdl, bounds, group_ref, long_name, name, 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, group_ref, long_name, name, positive, size, standard_name, unit, value, zoom_begin  &
-    , zoom_end, zoom_size )
-    
-    IMPLICIT NONE
-      TYPE(txios(axisgroup)) , INTENT(IN) :: axisgroup_hdl
+    ( axisgroup_hdl, bounds, group_ref, long_name, name, positive, size, standard_name, unit, value  &
+    , zoom_begin, zoom_end, zoom_size )
+    
+    IMPLICIT NONE
+      TYPE(txios(axisgroup)) , INTENT(IN) :: axisgroup_hdl
+      REAL (KIND=8) , OPTIONAL, INTENT(OUT) :: bounds(:,:)
       CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: group_ref
       CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: long_name
@@ -172,15 +181,16 @@
       
       CALL xios(get_axisgroup_attr_hdl_)  &
-      ( axisgroup_hdl, group_ref, long_name, name, positive, size, standard_name, unit, value, zoom_begin  &
-      , zoom_end, zoom_size )
+      ( axisgroup_hdl, bounds, group_ref, long_name, name, 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, group_ref_, long_name_, name_, positive_, size_, standard_name_, unit_, value_  &
-    , zoom_begin_, zoom_end_, zoom_size_ )
-    
-    IMPLICIT NONE
-      TYPE(txios(axisgroup)) , INTENT(IN) :: axisgroup_hdl
+    ( axisgroup_hdl, bounds_, group_ref_, long_name_, name_, positive_, size_, standard_name_, unit_  &
+    , value_, zoom_begin_, zoom_end_, zoom_size_ )
+    
+    IMPLICIT NONE
+      TYPE(txios(axisgroup)) , INTENT(IN) :: axisgroup_hdl
+      REAL (KIND=8) , OPTIONAL, INTENT(OUT) :: bounds_(:,:)
       CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: group_ref_
       CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: long_name_
@@ -195,4 +205,8 @@
       INTEGER  , OPTIONAL, INTENT(OUT) :: zoom_size_
       
+      IF (PRESENT(bounds_)) THEN
+        CALL cxios_get_axisgroup_bounds(axisgroup_hdl%daddr, bounds_,size(bounds_,1),size(bounds_,2))
+      ENDIF
+      
       IF (PRESENT(group_ref_)) THEN
         CALL cxios_get_axisgroup_group_ref(axisgroup_hdl%daddr, group_ref_, len(group_ref_))
@@ -244,10 +258,12 @@
   
   SUBROUTINE xios(is_defined_axisgroup_attr)  &
-    ( axisgroup_id, group_ref, long_name, name, positive, size, standard_name, unit, value, zoom_begin  &
-    , zoom_end, zoom_size )
+    ( axisgroup_id, bounds, group_ref, long_name, name, positive, size, standard_name, unit, value  &
+    , zoom_begin, zoom_end, zoom_size )
     
     IMPLICIT NONE
       TYPE(txios(axisgroup))  :: axisgroup_hdl
       CHARACTER(LEN=*), INTENT(IN) ::axisgroup_id
+      LOGICAL, OPTIONAL, INTENT(OUT) :: bounds
+      LOGICAL(KIND=C_BOOL) :: bounds_tmp
       LOGICAL, OPTIONAL, INTENT(OUT) :: group_ref
       LOGICAL(KIND=C_BOOL) :: group_ref_tmp
@@ -275,15 +291,17 @@
       CALL xios(get_axisgroup_handle)(axisgroup_id,axisgroup_hdl)
       CALL xios(is_defined_axisgroup_attr_hdl_)   &
-      ( axisgroup_hdl, group_ref, long_name, name, positive, size, standard_name, unit, value, zoom_begin  &
-      , zoom_end, zoom_size )
+      ( axisgroup_hdl, bounds, group_ref, long_name, name, 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, group_ref, long_name, name, positive, size, standard_name, unit, value, zoom_begin  &
-    , zoom_end, zoom_size )
-    
-    IMPLICIT NONE
-      TYPE(txios(axisgroup)) , INTENT(IN) :: axisgroup_hdl
+    ( axisgroup_hdl, bounds, group_ref, long_name, name, positive, size, standard_name, unit, value  &
+    , zoom_begin, zoom_end, zoom_size )
+    
+    IMPLICIT NONE
+      TYPE(txios(axisgroup)) , INTENT(IN) :: axisgroup_hdl
+      LOGICAL, OPTIONAL, INTENT(OUT) :: bounds
+      LOGICAL(KIND=C_BOOL) :: bounds_tmp
       LOGICAL, OPTIONAL, INTENT(OUT) :: group_ref
       LOGICAL(KIND=C_BOOL) :: group_ref_tmp
@@ -310,15 +328,17 @@
       
       CALL xios(is_defined_axisgroup_attr_hdl_)  &
-      ( axisgroup_hdl, group_ref, long_name, name, positive, size, standard_name, unit, value, zoom_begin  &
-      , zoom_end, zoom_size )
+      ( axisgroup_hdl, bounds, group_ref, long_name, name, 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, group_ref_, long_name_, name_, positive_, size_, standard_name_, unit_, value_  &
-    , zoom_begin_, zoom_end_, zoom_size_ )
-    
-    IMPLICIT NONE
-      TYPE(txios(axisgroup)) , INTENT(IN) :: axisgroup_hdl
+    ( axisgroup_hdl, bounds_, group_ref_, long_name_, name_, positive_, size_, standard_name_, unit_  &
+    , value_, zoom_begin_, zoom_end_, zoom_size_ )
+    
+    IMPLICIT NONE
+      TYPE(txios(axisgroup)) , INTENT(IN) :: axisgroup_hdl
+      LOGICAL, OPTIONAL, INTENT(OUT) :: bounds_
+      LOGICAL(KIND=C_BOOL) :: bounds__tmp
       LOGICAL, OPTIONAL, INTENT(OUT) :: group_ref_
       LOGICAL(KIND=C_BOOL) :: group_ref__tmp
@@ -344,4 +364,9 @@
       LOGICAL(KIND=C_BOOL) :: zoom_size__tmp
       
+      IF (PRESENT(bounds_)) THEN
+        bounds__tmp=cxios_is_defined_axisgroup_bounds(axisgroup_hdl%daddr)
+        bounds_=bounds__tmp
+      ENDIF
+      
       IF (PRESENT(group_ref_)) THEN
         group_ref__tmp=cxios_is_defined_axisgroup_group_ref(axisgroup_hdl%daddr)
Index: XIOS/branchs/xios-1.0/src/node/axis.cpp
===================================================================
--- XIOS/branchs/xios-1.0/src/node/axis.cpp	(revision 608)
+++ XIOS/branchs/xios-1.0/src/node/axis.cpp	(revision 609)
@@ -80,4 +80,13 @@
                << "The array \'value\' of axis [ id = '" << getId() << "' , context = '" << CObjectFactory::GetCurrentContextId() << "' ] has a different size that the one defined by the \'size\' attribute");
 
+      if (!bounds.isEmpty())
+      {
+        if (bounds.extent(0) != size || bounds.extent(1) != 2)
+            ERROR("CAxis::checkAttributes(void)",
+                  << "The bounds array of the axis [ id = '" << getId() << "' , context = '" << CObjectFactory::GetCurrentContextId() << "' ] must be of dimension axis size x 2" << endl
+                  << "Axis size is " << size << endl
+                  << "Bounds size is "<< bounds.extent(0) << " x " << bounds.extent(1));
+      }
+
       this->isChecked = true;
    }
Index: XIOS/branchs/xios-1.0/src/node/file.cpp
===================================================================
--- XIOS/branchs/xios-1.0/src/node/file.cpp	(revision 608)
+++ XIOS/branchs/xios-1.0/src/node/file.cpp	(revision 609)
@@ -183,14 +183,17 @@
 
       allDomainEmpty=true ;
-      set<CDomain*> setDomain ;
+      set<CAxis*> setAxis;
+      set<CDomain*> setDomains;
 
       std::vector<CField*>::iterator it, end = this->enabledFields.end();
-      for (it = this->enabledFields.begin() ;it != end; it++)
+      for (it = this->enabledFields.begin(); it != end; it++)
       {
          CField* field = *it;
-         allDomainEmpty&=field->grid->domain->isEmpty() ;
-         setDomain.insert(field->grid->domain) ;
-      }
-      nbDomain=setDomain.size() ;
+         allDomainEmpty&=field->grid->domain->isEmpty();
+         setAxis.insert(field->grid->axis);
+         setDomains.insert(field->grid->domain);
+      }
+      nbAxis = setAxis.size();
+      nbDomains = setDomains.size();
 
       // create sub communicator for file  
Index: XIOS/branchs/xios-1.0/src/node/file.hpp
===================================================================
--- XIOS/branchs/xios-1.0/src/node/file.hpp	(revision 608)
+++ XIOS/branchs/xios-1.0/src/node/file.hpp	(revision 609)
@@ -130,5 +130,5 @@
          CDuration splitFreq ;
          CDuration outputFreq ;
-         int nbDomain ;
+         int nbAxis, nbDomains;
          bool isOpen ;
          MPI_Comm fileComm ;
Index: XIOS/branchs/xios-1.0/src/output/nc4_data_output.cpp
===================================================================
--- XIOS/branchs/xios-1.0/src/output/nc4_data_output.cpp	(revision 608)
+++ XIOS/branchs/xios-1.0/src/output/nc4_data_output.cpp	(revision 609)
@@ -482,6 +482,6 @@
          if (axis->IsWritten(this->filename)) return;
          axis->checkAttributes();
-         StdSize zoom_size=axis->zoom_size.getValue() ;
-         StdSize zoom_begin=axis->zoom_begin.getValue()-1 ;
+         int zoom_size = axis->zoom_size.getValue();
+         int zoom_begin = axis->zoom_begin.getValue() - 1;
 
 
@@ -516,13 +516,32 @@
                        ("units", axis->unit.getValue(), &axisid);
 
-                if (!axis->positive.isEmpty())
-                  if (axis->positive==CAxis::positive_attr::up) SuperClassWriter::addAttribute("positive", string("up"), &axisid);
-                  else   SuperClassWriter::addAttribute("positive", string("down"), &axisid);
+                 if (!axis->positive.isEmpty())
+                   if (axis->positive==CAxis::positive_attr::up) SuperClassWriter::addAttribute("positive", string("up"), &axisid);
+                   else SuperClassWriter::addAttribute("positive", string("down"), &axisid);
+
+                 StdString axisBoundsId = axisid + "_bounds";
+                 if (!axis->bounds.isEmpty())
+                 {
+                   dims.push_back("axis_nbounds");
+                   SuperClassWriter::addVariable(axisBoundsId, NC_FLOAT, dims);
+                   SuperClassWriter::addAttribute("bounds", axisBoundsId, &axisid);
+                 }
 
                  SuperClassWriter::definition_end();
 
-                 CArray<double,1> axis_value(zoom_size) ;
-                 for(StdSize i = 0 ; i < zoom_size ; i++) axis_value(i)=axis->value(i+zoom_begin) ;
+                 CArray<double,1> axis_value(zoom_size);
+                 for(int i = 0 ; i < zoom_size; i++) axis_value(i) = axis->value(i+zoom_begin);
                  SuperClassWriter::writeData(axis_value, axisid, isCollective, 0);
+
+                 if (!axis->bounds.isEmpty())
+                 {
+                   CArray<double,2> axisBounds(zoom_size, 2);
+                   for (int i = 0; i < zoom_size; i++)
+                   {
+                     axisBounds(i, 0) = axis->bounds(i + zoom_begin, 0);
+                     axisBounds(i, 1) = axis->bounds(i + zoom_begin, 1);
+                   }
+                   SuperClassWriter::writeData(axisBounds, axisBoundsId, isCollective, 0);
+                 }
 
                  SuperClassWriter::definition_start();
@@ -779,10 +798,16 @@
                                ? file->description.getValue()
                                : StdString("Created by xios");
+
+         singleDomain = (file->nbDomains == 1);
+
          try
          {
            this->writeFileAttributes(filename, description,
-                                     StdString ("CF-1.1"),
+                                     StdString("CF-1.1"),
                                      StdString("An IPSL model"),
                                      this->getTimeStamp());
+
+           if (file->nbAxis >= 1)
+             SuperClassWriter::addDimension("axis_nbounds", 2);
          }
          catch (CNetCdfException& e)
@@ -796,6 +821,4 @@
            ERROR("CNc4DataOutput::writeFile_ (CFile* file)", << msg);
          }
-         if (file->nbDomain==1) singleDomain=true ;
-         else singleDomain=false ;
       }
 
