Index: XIOS/branchs/xios-1.0/src/config/file_attribute.conf
===================================================================
--- XIOS/branchs/xios-1.0/src/config/file_attribute.conf	(revision 738)
+++ XIOS/branchs/xios-1.0/src/config/file_attribute.conf	(revision 798)
@@ -14,4 +14,5 @@
 DECLARE_ATTRIBUTE(StdString,      par_access)
 DECLARE_ENUM4(time_counter, centered, instant, record, none)
+DECLARE_ATTRIBUTE(bool,      append)
 
 DECLARE_ATTRIBUTE(int,       compression_level)
Index: XIOS/branchs/xios-1.0/src/data_output.hpp
===================================================================
--- XIOS/branchs/xios-1.0/src/data_output.hpp	(revision 738)
+++ XIOS/branchs/xios-1.0/src/data_output.hpp	(revision 798)
@@ -32,4 +32,7 @@
             virtual void definition_end(void)   = 0;
 
+            //!< Test if the file was opened in append mode
+            virtual bool IsInAppendMode() const { return appendMode; };
+
             virtual ~CDataOutput(void);
 
@@ -56,4 +59,5 @@
             /// PropriÃ©tÃ©s protÃ©gÃ©es ///
             EDataOutputType type;
+            bool appendMode; //!< If true, we are appending data to an existing file
 
       }; // class CDataOutput
Index: XIOS/branchs/xios-1.0/src/interface/c_attr/icfile_attr.cpp
===================================================================
--- XIOS/branchs/xios-1.0/src/interface/c_attr/icfile_attr.cpp	(revision 738)
+++ XIOS/branchs/xios-1.0/src/interface/c_attr/icfile_attr.cpp	(revision 798)
@@ -17,4 +17,27 @@
   typedef xios::CFile*  file_Ptr;
   
+  void cxios_set_file_append(file_Ptr file_hdl, bool append)
+  {
+     CTimer::get("XIOS").resume();
+    file_hdl->append.setValue(append);
+    file_hdl->sendAttributToServer(file_hdl->append);
+     CTimer::get("XIOS").suspend();
+  }
+  
+  void cxios_get_file_append(file_Ptr file_hdl, bool* append)
+  {
+    *append = file_hdl->append.getInheritedValue();
+  }
+  
+  bool cxios_is_defined_file_append(file_Ptr file_hdl )
+  {
+    CTimer::get("XIOS").resume();
+    bool isDefined = file_hdl->append.hasInheritedValue();
+    CTimer::get("XIOS").suspend();
+    return isDefined;
+  }
+  
+  
+  
   void cxios_set_file_compression_level(file_Ptr file_hdl, int compression_level)
   {
Index: XIOS/branchs/xios-1.0/src/interface/c_attr/icfilegroup_attr.cpp
===================================================================
--- XIOS/branchs/xios-1.0/src/interface/c_attr/icfilegroup_attr.cpp	(revision 738)
+++ XIOS/branchs/xios-1.0/src/interface/c_attr/icfilegroup_attr.cpp	(revision 798)
@@ -17,4 +17,27 @@
   typedef xios::CFileGroup*  filegroup_Ptr;
   
+  void cxios_set_filegroup_append(filegroup_Ptr filegroup_hdl, bool append)
+  {
+     CTimer::get("XIOS").resume();
+    filegroup_hdl->append.setValue(append);
+    filegroup_hdl->sendAttributToServer(filegroup_hdl->append);
+     CTimer::get("XIOS").suspend();
+  }
+  
+  void cxios_get_filegroup_append(filegroup_Ptr filegroup_hdl, bool* append)
+  {
+    *append = filegroup_hdl->append.getInheritedValue();
+  }
+  
+  bool cxios_is_defined_filegroup_append(filegroup_Ptr filegroup_hdl )
+  {
+    CTimer::get("XIOS").resume();
+    bool isDefined = filegroup_hdl->append.hasInheritedValue();
+    CTimer::get("XIOS").suspend();
+    return isDefined;
+  }
+  
+  
+  
   void cxios_set_filegroup_compression_level(filegroup_Ptr filegroup_hdl, int compression_level)
   {
Index: XIOS/branchs/xios-1.0/src/interface/fortran_attr/file_interface_attr.f90
===================================================================
--- XIOS/branchs/xios-1.0/src/interface/fortran_attr/file_interface_attr.f90	(revision 738)
+++ XIOS/branchs/xios-1.0/src/interface/fortran_attr/file_interface_attr.f90	(revision 798)
@@ -9,4 +9,23 @@
     
     
+    SUBROUTINE cxios_set_file_append(file_hdl, append) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: file_hdl
+      LOGICAL (KIND=C_BOOL)      , VALUE :: append
+    END SUBROUTINE cxios_set_file_append
+    
+    SUBROUTINE cxios_get_file_append(file_hdl, append) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: file_hdl
+      LOGICAL (KIND=C_BOOL)             :: append
+    END SUBROUTINE cxios_get_file_append
+    
+    FUNCTION cxios_is_defined_file_append(file_hdl ) BIND(C)
+      USE ISO_C_BINDING
+      LOGICAL(kind=C_BOOL) :: cxios_is_defined_file_append
+      INTEGER (kind = C_INTPTR_T), VALUE :: file_hdl
+    END FUNCTION cxios_is_defined_file_append
+    
+    
     SUBROUTINE cxios_set_file_compression_level(file_hdl, compression_level) BIND(C)
       USE ISO_C_BINDING
Index: XIOS/branchs/xios-1.0/src/interface/fortran_attr/filegroup_interface_attr.f90
===================================================================
--- XIOS/branchs/xios-1.0/src/interface/fortran_attr/filegroup_interface_attr.f90	(revision 738)
+++ XIOS/branchs/xios-1.0/src/interface/fortran_attr/filegroup_interface_attr.f90	(revision 798)
@@ -9,4 +9,23 @@
     
     
+    SUBROUTINE cxios_set_filegroup_append(filegroup_hdl, append) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: filegroup_hdl
+      LOGICAL (KIND=C_BOOL)      , VALUE :: append
+    END SUBROUTINE cxios_set_filegroup_append
+    
+    SUBROUTINE cxios_get_filegroup_append(filegroup_hdl, append) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: filegroup_hdl
+      LOGICAL (KIND=C_BOOL)             :: append
+    END SUBROUTINE cxios_get_filegroup_append
+    
+    FUNCTION cxios_is_defined_filegroup_append(filegroup_hdl ) BIND(C)
+      USE ISO_C_BINDING
+      LOGICAL(kind=C_BOOL) :: cxios_is_defined_filegroup_append
+      INTEGER (kind = C_INTPTR_T), VALUE :: filegroup_hdl
+    END FUNCTION cxios_is_defined_filegroup_append
+    
+    
     SUBROUTINE cxios_set_filegroup_compression_level(filegroup_hdl, compression_level) BIND(C)
       USE ISO_C_BINDING
Index: XIOS/branchs/xios-1.0/src/interface/fortran_attr/ifile_attr.F90
===================================================================
--- XIOS/branchs/xios-1.0/src/interface/fortran_attr/ifile_attr.F90	(revision 738)
+++ XIOS/branchs/xios-1.0/src/interface/fortran_attr/ifile_attr.F90	(revision 798)
@@ -12,5 +12,5 @@
   
   SUBROUTINE xios(set_file_attr)  &
-    ( file_id, compression_level, description, enabled, min_digits, name, name_suffix, output_freq  &
+    ( file_id, append, compression_level, description, enabled, min_digits, name, name_suffix, output_freq  &
     , output_level, par_access, split_freq, split_freq_format, sync_freq, time_counter, type )
     
@@ -18,4 +18,6 @@
       TYPE(txios(file))  :: file_hdl
       CHARACTER(LEN=*), INTENT(IN) ::file_id
+      LOGICAL  , OPTIONAL, INTENT(IN) :: append
+      LOGICAL (KIND=C_BOOL) :: append_tmp
       INTEGER  , OPTIONAL, INTENT(IN) :: compression_level
       CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: description
@@ -36,5 +38,5 @@
       CALL xios(get_file_handle)(file_id,file_hdl)
       CALL xios(set_file_attr_hdl_)   &
-      ( file_hdl, compression_level, description, enabled, min_digits, name, name_suffix, output_freq  &
+      ( file_hdl, append, compression_level, description, enabled, min_digits, name, name_suffix, output_freq  &
       , output_level, par_access, split_freq, split_freq_format, sync_freq, time_counter, type )
     
@@ -42,9 +44,11 @@
   
   SUBROUTINE xios(set_file_attr_hdl)  &
-    ( file_hdl, compression_level, description, enabled, min_digits, name, name_suffix, output_freq  &
+    ( file_hdl, append, compression_level, description, enabled, min_digits, name, name_suffix, output_freq  &
     , output_level, par_access, split_freq, split_freq_format, sync_freq, time_counter, type )
     
     IMPLICIT NONE
       TYPE(txios(file)) , INTENT(IN) :: file_hdl
+      LOGICAL  , OPTIONAL, INTENT(IN) :: append
+      LOGICAL (KIND=C_BOOL) :: append_tmp
       INTEGER  , OPTIONAL, INTENT(IN) :: compression_level
       CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: description
@@ -64,5 +68,5 @@
       
       CALL xios(set_file_attr_hdl_)  &
-      ( file_hdl, compression_level, description, enabled, min_digits, name, name_suffix, output_freq  &
+      ( file_hdl, append, compression_level, description, enabled, min_digits, name, name_suffix, output_freq  &
       , output_level, par_access, split_freq, split_freq_format, sync_freq, time_counter, type )
     
@@ -70,10 +74,12 @@
   
   SUBROUTINE xios(set_file_attr_hdl_)   &
-    ( file_hdl, compression_level_, description_, enabled_, min_digits_, name_, name_suffix_, output_freq_  &
-    , output_level_, par_access_, split_freq_, split_freq_format_, sync_freq_, time_counter_, type_  &
-     )
+    ( file_hdl, append_, compression_level_, description_, enabled_, min_digits_, name_, name_suffix_  &
+    , output_freq_, output_level_, par_access_, split_freq_, split_freq_format_, sync_freq_, time_counter_  &
+    , type_ )
     
     IMPLICIT NONE
       TYPE(txios(file)) , INTENT(IN) :: file_hdl
+      LOGICAL  , OPTIONAL, INTENT(IN) :: append_
+      LOGICAL (KIND=C_BOOL) :: append__tmp
       INTEGER  , OPTIONAL, INTENT(IN) :: compression_level_
       CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: description_
@@ -92,4 +98,9 @@
       CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: type_
       
+      IF (PRESENT(append_)) THEN
+        append__tmp=append_
+        CALL cxios_set_file_append(file_hdl%daddr, append__tmp)
+      ENDIF
+      
       IF (PRESENT(compression_level_)) THEN
         CALL cxios_set_file_compression_level(file_hdl%daddr, compression_level_)
@@ -154,5 +165,5 @@
   
   SUBROUTINE xios(get_file_attr)  &
-    ( file_id, compression_level, description, enabled, min_digits, name, name_suffix, output_freq  &
+    ( file_id, append, compression_level, description, enabled, min_digits, name, name_suffix, output_freq  &
     , output_level, par_access, split_freq, split_freq_format, sync_freq, time_counter, type )
     
@@ -160,4 +171,6 @@
       TYPE(txios(file))  :: file_hdl
       CHARACTER(LEN=*), INTENT(IN) ::file_id
+      LOGICAL  , OPTIONAL, INTENT(OUT) :: append
+      LOGICAL (KIND=C_BOOL) :: append_tmp
       INTEGER  , OPTIONAL, INTENT(OUT) :: compression_level
       CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: description
@@ -178,5 +191,5 @@
       CALL xios(get_file_handle)(file_id,file_hdl)
       CALL xios(get_file_attr_hdl_)   &
-      ( file_hdl, compression_level, description, enabled, min_digits, name, name_suffix, output_freq  &
+      ( file_hdl, append, compression_level, description, enabled, min_digits, name, name_suffix, output_freq  &
       , output_level, par_access, split_freq, split_freq_format, sync_freq, time_counter, type )
     
@@ -184,9 +197,11 @@
   
   SUBROUTINE xios(get_file_attr_hdl)  &
-    ( file_hdl, compression_level, description, enabled, min_digits, name, name_suffix, output_freq  &
+    ( file_hdl, append, compression_level, description, enabled, min_digits, name, name_suffix, output_freq  &
     , output_level, par_access, split_freq, split_freq_format, sync_freq, time_counter, type )
     
     IMPLICIT NONE
       TYPE(txios(file)) , INTENT(IN) :: file_hdl
+      LOGICAL  , OPTIONAL, INTENT(OUT) :: append
+      LOGICAL (KIND=C_BOOL) :: append_tmp
       INTEGER  , OPTIONAL, INTENT(OUT) :: compression_level
       CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: description
@@ -206,5 +221,5 @@
       
       CALL xios(get_file_attr_hdl_)  &
-      ( file_hdl, compression_level, description, enabled, min_digits, name, name_suffix, output_freq  &
+      ( file_hdl, append, compression_level, description, enabled, min_digits, name, name_suffix, output_freq  &
       , output_level, par_access, split_freq, split_freq_format, sync_freq, time_counter, type )
     
@@ -212,10 +227,12 @@
   
   SUBROUTINE xios(get_file_attr_hdl_)   &
-    ( file_hdl, compression_level_, description_, enabled_, min_digits_, name_, name_suffix_, output_freq_  &
-    , output_level_, par_access_, split_freq_, split_freq_format_, sync_freq_, time_counter_, type_  &
-     )
+    ( file_hdl, append_, compression_level_, description_, enabled_, min_digits_, name_, name_suffix_  &
+    , output_freq_, output_level_, par_access_, split_freq_, split_freq_format_, sync_freq_, time_counter_  &
+    , type_ )
     
     IMPLICIT NONE
       TYPE(txios(file)) , INTENT(IN) :: file_hdl
+      LOGICAL  , OPTIONAL, INTENT(OUT) :: append_
+      LOGICAL (KIND=C_BOOL) :: append__tmp
       INTEGER  , OPTIONAL, INTENT(OUT) :: compression_level_
       CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: description_
@@ -234,4 +251,9 @@
       CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: type_
       
+      IF (PRESENT(append_)) THEN
+        CALL cxios_get_file_append(file_hdl%daddr, append__tmp)
+        append_=append__tmp
+      ENDIF
+      
       IF (PRESENT(compression_level_)) THEN
         CALL cxios_get_file_compression_level(file_hdl%daddr, compression_level_)
@@ -296,5 +318,5 @@
   
   SUBROUTINE xios(is_defined_file_attr)  &
-    ( file_id, compression_level, description, enabled, min_digits, name, name_suffix, output_freq  &
+    ( file_id, append, compression_level, description, enabled, min_digits, name, name_suffix, output_freq  &
     , output_level, par_access, split_freq, split_freq_format, sync_freq, time_counter, type )
     
@@ -302,4 +324,6 @@
       TYPE(txios(file))  :: file_hdl
       CHARACTER(LEN=*), INTENT(IN) ::file_id
+      LOGICAL, OPTIONAL, INTENT(OUT) :: append
+      LOGICAL(KIND=C_BOOL) :: append_tmp
       LOGICAL, OPTIONAL, INTENT(OUT) :: compression_level
       LOGICAL(KIND=C_BOOL) :: compression_level_tmp
@@ -333,5 +357,5 @@
       CALL xios(get_file_handle)(file_id,file_hdl)
       CALL xios(is_defined_file_attr_hdl_)   &
-      ( file_hdl, compression_level, description, enabled, min_digits, name, name_suffix, output_freq  &
+      ( file_hdl, append, compression_level, description, enabled, min_digits, name, name_suffix, output_freq  &
       , output_level, par_access, split_freq, split_freq_format, sync_freq, time_counter, type )
     
@@ -339,9 +363,11 @@
   
   SUBROUTINE xios(is_defined_file_attr_hdl)  &
-    ( file_hdl, compression_level, description, enabled, min_digits, name, name_suffix, output_freq  &
+    ( file_hdl, append, compression_level, description, enabled, min_digits, name, name_suffix, output_freq  &
     , output_level, par_access, split_freq, split_freq_format, sync_freq, time_counter, type )
     
     IMPLICIT NONE
       TYPE(txios(file)) , INTENT(IN) :: file_hdl
+      LOGICAL, OPTIONAL, INTENT(OUT) :: append
+      LOGICAL(KIND=C_BOOL) :: append_tmp
       LOGICAL, OPTIONAL, INTENT(OUT) :: compression_level
       LOGICAL(KIND=C_BOOL) :: compression_level_tmp
@@ -374,5 +400,5 @@
       
       CALL xios(is_defined_file_attr_hdl_)  &
-      ( file_hdl, compression_level, description, enabled, min_digits, name, name_suffix, output_freq  &
+      ( file_hdl, append, compression_level, description, enabled, min_digits, name, name_suffix, output_freq  &
       , output_level, par_access, split_freq, split_freq_format, sync_freq, time_counter, type )
     
@@ -380,10 +406,12 @@
   
   SUBROUTINE xios(is_defined_file_attr_hdl_)   &
-    ( file_hdl, compression_level_, description_, enabled_, min_digits_, name_, name_suffix_, output_freq_  &
-    , output_level_, par_access_, split_freq_, split_freq_format_, sync_freq_, time_counter_, type_  &
-     )
+    ( file_hdl, append_, compression_level_, description_, enabled_, min_digits_, name_, name_suffix_  &
+    , output_freq_, output_level_, par_access_, split_freq_, split_freq_format_, sync_freq_, time_counter_  &
+    , type_ )
     
     IMPLICIT NONE
       TYPE(txios(file)) , INTENT(IN) :: file_hdl
+      LOGICAL, OPTIONAL, INTENT(OUT) :: append_
+      LOGICAL(KIND=C_BOOL) :: append__tmp
       LOGICAL, OPTIONAL, INTENT(OUT) :: compression_level_
       LOGICAL(KIND=C_BOOL) :: compression_level__tmp
@@ -415,4 +443,9 @@
       LOGICAL(KIND=C_BOOL) :: type__tmp
       
+      IF (PRESENT(append_)) THEN
+        append__tmp=cxios_is_defined_file_append(file_hdl%daddr)
+        append_=append__tmp
+      ENDIF
+      
       IF (PRESENT(compression_level_)) THEN
         compression_level__tmp=cxios_is_defined_file_compression_level(file_hdl%daddr)
Index: XIOS/branchs/xios-1.0/src/interface/fortran_attr/ifilegroup_attr.F90
===================================================================
--- XIOS/branchs/xios-1.0/src/interface/fortran_attr/ifilegroup_attr.F90	(revision 738)
+++ XIOS/branchs/xios-1.0/src/interface/fortran_attr/ifilegroup_attr.F90	(revision 798)
@@ -12,11 +12,13 @@
   
   SUBROUTINE xios(set_filegroup_attr)  &
-    ( filegroup_id, compression_level, description, enabled, group_ref, min_digits, name, name_suffix  &
-    , output_freq, output_level, par_access, split_freq, split_freq_format, sync_freq, time_counter  &
-    , type )
+    ( filegroup_id, append, compression_level, description, enabled, group_ref, min_digits, name  &
+    , name_suffix, output_freq, output_level, par_access, split_freq, split_freq_format, sync_freq  &
+    , time_counter, type )
     
     IMPLICIT NONE
       TYPE(txios(filegroup))  :: filegroup_hdl
       CHARACTER(LEN=*), INTENT(IN) ::filegroup_id
+      LOGICAL  , OPTIONAL, INTENT(IN) :: append
+      LOGICAL (KIND=C_BOOL) :: append_tmp
       INTEGER  , OPTIONAL, INTENT(IN) :: compression_level
       CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: description
@@ -38,17 +40,19 @@
       CALL xios(get_filegroup_handle)(filegroup_id,filegroup_hdl)
       CALL xios(set_filegroup_attr_hdl_)   &
-      ( filegroup_hdl, compression_level, description, enabled, group_ref, min_digits, name, name_suffix  &
-      , output_freq, output_level, par_access, split_freq, split_freq_format, sync_freq, time_counter  &
-      , type )
+      ( filegroup_hdl, append, compression_level, description, enabled, group_ref, min_digits, name  &
+      , name_suffix, output_freq, output_level, par_access, split_freq, split_freq_format, sync_freq  &
+      , time_counter, type )
     
   END SUBROUTINE xios(set_filegroup_attr)
   
   SUBROUTINE xios(set_filegroup_attr_hdl)  &
-    ( filegroup_hdl, compression_level, description, enabled, group_ref, min_digits, name, name_suffix  &
-    , output_freq, output_level, par_access, split_freq, split_freq_format, sync_freq, time_counter  &
-    , type )
+    ( filegroup_hdl, append, compression_level, description, enabled, group_ref, min_digits, name  &
+    , name_suffix, output_freq, output_level, par_access, split_freq, split_freq_format, sync_freq  &
+    , time_counter, type )
     
     IMPLICIT NONE
       TYPE(txios(filegroup)) , INTENT(IN) :: filegroup_hdl
+      LOGICAL  , OPTIONAL, INTENT(IN) :: append
+      LOGICAL (KIND=C_BOOL) :: append_tmp
       INTEGER  , OPTIONAL, INTENT(IN) :: compression_level
       CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: description
@@ -69,17 +73,19 @@
       
       CALL xios(set_filegroup_attr_hdl_)  &
-      ( filegroup_hdl, compression_level, description, enabled, group_ref, min_digits, name, name_suffix  &
-      , output_freq, output_level, par_access, split_freq, split_freq_format, sync_freq, time_counter  &
-      , type )
+      ( filegroup_hdl, append, compression_level, description, enabled, group_ref, min_digits, name  &
+      , name_suffix, output_freq, output_level, par_access, split_freq, split_freq_format, sync_freq  &
+      , time_counter, type )
     
   END SUBROUTINE xios(set_filegroup_attr_hdl)
   
   SUBROUTINE xios(set_filegroup_attr_hdl_)   &
-    ( filegroup_hdl, compression_level_, description_, enabled_, group_ref_, min_digits_, name_  &
-    , name_suffix_, output_freq_, output_level_, par_access_, split_freq_, split_freq_format_, sync_freq_  &
-    , time_counter_, type_ )
+    ( filegroup_hdl, append_, compression_level_, description_, enabled_, group_ref_, min_digits_  &
+    , name_, name_suffix_, output_freq_, output_level_, par_access_, split_freq_, split_freq_format_  &
+    , sync_freq_, time_counter_, type_ )
     
     IMPLICIT NONE
       TYPE(txios(filegroup)) , INTENT(IN) :: filegroup_hdl
+      LOGICAL  , OPTIONAL, INTENT(IN) :: append_
+      LOGICAL (KIND=C_BOOL) :: append__tmp
       INTEGER  , OPTIONAL, INTENT(IN) :: compression_level_
       CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: description_
@@ -99,4 +105,9 @@
       CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: type_
       
+      IF (PRESENT(append_)) THEN
+        append__tmp=append_
+        CALL cxios_set_filegroup_append(filegroup_hdl%daddr, append__tmp)
+      ENDIF
+      
       IF (PRESENT(compression_level_)) THEN
         CALL cxios_set_filegroup_compression_level(filegroup_hdl%daddr, compression_level_)
@@ -165,11 +176,13 @@
   
   SUBROUTINE xios(get_filegroup_attr)  &
-    ( filegroup_id, compression_level, description, enabled, group_ref, min_digits, name, name_suffix  &
-    , output_freq, output_level, par_access, split_freq, split_freq_format, sync_freq, time_counter  &
-    , type )
+    ( filegroup_id, append, compression_level, description, enabled, group_ref, min_digits, name  &
+    , name_suffix, output_freq, output_level, par_access, split_freq, split_freq_format, sync_freq  &
+    , time_counter, type )
     
     IMPLICIT NONE
       TYPE(txios(filegroup))  :: filegroup_hdl
       CHARACTER(LEN=*), INTENT(IN) ::filegroup_id
+      LOGICAL  , OPTIONAL, INTENT(OUT) :: append
+      LOGICAL (KIND=C_BOOL) :: append_tmp
       INTEGER  , OPTIONAL, INTENT(OUT) :: compression_level
       CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: description
@@ -191,17 +204,19 @@
       CALL xios(get_filegroup_handle)(filegroup_id,filegroup_hdl)
       CALL xios(get_filegroup_attr_hdl_)   &
-      ( filegroup_hdl, compression_level, description, enabled, group_ref, min_digits, name, name_suffix  &
-      , output_freq, output_level, par_access, split_freq, split_freq_format, sync_freq, time_counter  &
-      , type )
+      ( filegroup_hdl, append, compression_level, description, enabled, group_ref, min_digits, name  &
+      , name_suffix, output_freq, output_level, par_access, split_freq, split_freq_format, sync_freq  &
+      , time_counter, type )
     
   END SUBROUTINE xios(get_filegroup_attr)
   
   SUBROUTINE xios(get_filegroup_attr_hdl)  &
-    ( filegroup_hdl, compression_level, description, enabled, group_ref, min_digits, name, name_suffix  &
-    , output_freq, output_level, par_access, split_freq, split_freq_format, sync_freq, time_counter  &
-    , type )
+    ( filegroup_hdl, append, compression_level, description, enabled, group_ref, min_digits, name  &
+    , name_suffix, output_freq, output_level, par_access, split_freq, split_freq_format, sync_freq  &
+    , time_counter, type )
     
     IMPLICIT NONE
       TYPE(txios(filegroup)) , INTENT(IN) :: filegroup_hdl
+      LOGICAL  , OPTIONAL, INTENT(OUT) :: append
+      LOGICAL (KIND=C_BOOL) :: append_tmp
       INTEGER  , OPTIONAL, INTENT(OUT) :: compression_level
       CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: description
@@ -222,17 +237,19 @@
       
       CALL xios(get_filegroup_attr_hdl_)  &
-      ( filegroup_hdl, compression_level, description, enabled, group_ref, min_digits, name, name_suffix  &
-      , output_freq, output_level, par_access, split_freq, split_freq_format, sync_freq, time_counter  &
-      , type )
+      ( filegroup_hdl, append, compression_level, description, enabled, group_ref, min_digits, name  &
+      , name_suffix, output_freq, output_level, par_access, split_freq, split_freq_format, sync_freq  &
+      , time_counter, type )
     
   END SUBROUTINE xios(get_filegroup_attr_hdl)
   
   SUBROUTINE xios(get_filegroup_attr_hdl_)   &
-    ( filegroup_hdl, compression_level_, description_, enabled_, group_ref_, min_digits_, name_  &
-    , name_suffix_, output_freq_, output_level_, par_access_, split_freq_, split_freq_format_, sync_freq_  &
-    , time_counter_, type_ )
+    ( filegroup_hdl, append_, compression_level_, description_, enabled_, group_ref_, min_digits_  &
+    , name_, name_suffix_, output_freq_, output_level_, par_access_, split_freq_, split_freq_format_  &
+    , sync_freq_, time_counter_, type_ )
     
     IMPLICIT NONE
       TYPE(txios(filegroup)) , INTENT(IN) :: filegroup_hdl
+      LOGICAL  , OPTIONAL, INTENT(OUT) :: append_
+      LOGICAL (KIND=C_BOOL) :: append__tmp
       INTEGER  , OPTIONAL, INTENT(OUT) :: compression_level_
       CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: description_
@@ -252,4 +269,9 @@
       CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: type_
       
+      IF (PRESENT(append_)) THEN
+        CALL cxios_get_filegroup_append(filegroup_hdl%daddr, append__tmp)
+        append_=append__tmp
+      ENDIF
+      
       IF (PRESENT(compression_level_)) THEN
         CALL cxios_get_filegroup_compression_level(filegroup_hdl%daddr, compression_level_)
@@ -318,11 +340,13 @@
   
   SUBROUTINE xios(is_defined_filegroup_attr)  &
-    ( filegroup_id, compression_level, description, enabled, group_ref, min_digits, name, name_suffix  &
-    , output_freq, output_level, par_access, split_freq, split_freq_format, sync_freq, time_counter  &
-    , type )
+    ( filegroup_id, append, compression_level, description, enabled, group_ref, min_digits, name  &
+    , name_suffix, output_freq, output_level, par_access, split_freq, split_freq_format, sync_freq  &
+    , time_counter, type )
     
     IMPLICIT NONE
       TYPE(txios(filegroup))  :: filegroup_hdl
       CHARACTER(LEN=*), INTENT(IN) ::filegroup_id
+      LOGICAL, OPTIONAL, INTENT(OUT) :: append
+      LOGICAL(KIND=C_BOOL) :: append_tmp
       LOGICAL, OPTIONAL, INTENT(OUT) :: compression_level
       LOGICAL(KIND=C_BOOL) :: compression_level_tmp
@@ -358,17 +382,19 @@
       CALL xios(get_filegroup_handle)(filegroup_id,filegroup_hdl)
       CALL xios(is_defined_filegroup_attr_hdl_)   &
-      ( filegroup_hdl, compression_level, description, enabled, group_ref, min_digits, name, name_suffix  &
-      , output_freq, output_level, par_access, split_freq, split_freq_format, sync_freq, time_counter  &
-      , type )
+      ( filegroup_hdl, append, compression_level, description, enabled, group_ref, min_digits, name  &
+      , name_suffix, output_freq, output_level, par_access, split_freq, split_freq_format, sync_freq  &
+      , time_counter, type )
     
   END SUBROUTINE xios(is_defined_filegroup_attr)
   
   SUBROUTINE xios(is_defined_filegroup_attr_hdl)  &
-    ( filegroup_hdl, compression_level, description, enabled, group_ref, min_digits, name, name_suffix  &
-    , output_freq, output_level, par_access, split_freq, split_freq_format, sync_freq, time_counter  &
-    , type )
+    ( filegroup_hdl, append, compression_level, description, enabled, group_ref, min_digits, name  &
+    , name_suffix, output_freq, output_level, par_access, split_freq, split_freq_format, sync_freq  &
+    , time_counter, type )
     
     IMPLICIT NONE
       TYPE(txios(filegroup)) , INTENT(IN) :: filegroup_hdl
+      LOGICAL, OPTIONAL, INTENT(OUT) :: append
+      LOGICAL(KIND=C_BOOL) :: append_tmp
       LOGICAL, OPTIONAL, INTENT(OUT) :: compression_level
       LOGICAL(KIND=C_BOOL) :: compression_level_tmp
@@ -403,17 +429,19 @@
       
       CALL xios(is_defined_filegroup_attr_hdl_)  &
-      ( filegroup_hdl, compression_level, description, enabled, group_ref, min_digits, name, name_suffix  &
-      , output_freq, output_level, par_access, split_freq, split_freq_format, sync_freq, time_counter  &
-      , type )
+      ( filegroup_hdl, append, compression_level, description, enabled, group_ref, min_digits, name  &
+      , name_suffix, output_freq, output_level, par_access, split_freq, split_freq_format, sync_freq  &
+      , time_counter, type )
     
   END SUBROUTINE xios(is_defined_filegroup_attr_hdl)
   
   SUBROUTINE xios(is_defined_filegroup_attr_hdl_)   &
-    ( filegroup_hdl, compression_level_, description_, enabled_, group_ref_, min_digits_, name_  &
-    , name_suffix_, output_freq_, output_level_, par_access_, split_freq_, split_freq_format_, sync_freq_  &
-    , time_counter_, type_ )
+    ( filegroup_hdl, append_, compression_level_, description_, enabled_, group_ref_, min_digits_  &
+    , name_, name_suffix_, output_freq_, output_level_, par_access_, split_freq_, split_freq_format_  &
+    , sync_freq_, time_counter_, type_ )
     
     IMPLICIT NONE
       TYPE(txios(filegroup)) , INTENT(IN) :: filegroup_hdl
+      LOGICAL, OPTIONAL, INTENT(OUT) :: append_
+      LOGICAL(KIND=C_BOOL) :: append__tmp
       LOGICAL, OPTIONAL, INTENT(OUT) :: compression_level_
       LOGICAL(KIND=C_BOOL) :: compression_level__tmp
@@ -447,4 +475,9 @@
       LOGICAL(KIND=C_BOOL) :: type__tmp
       
+      IF (PRESENT(append_)) THEN
+        append__tmp=cxios_is_defined_filegroup_append(filegroup_hdl%daddr)
+        append_=append__tmp
+      ENDIF
+      
       IF (PRESENT(compression_level_)) THEN
         compression_level__tmp=cxios_is_defined_filegroup_compression_level(filegroup_hdl%daddr)
Index: XIOS/branchs/xios-1.0/src/node/file.cpp
===================================================================
--- XIOS/branchs/xios-1.0/src/node/file.cpp	(revision 738)
+++ XIOS/branchs/xios-1.0/src/node/file.cpp	(revision 798)
@@ -311,4 +311,6 @@
          oss << ".nc";
 
+        bool append = !this->append.isEmpty() && this->append.getValue();
+
          if (isOpen) data_out->closeFile() ;
          bool isCollective=true ;
@@ -324,26 +326,32 @@
            }
          }
-         data_out=shared_ptr<CDataOutput>(new CNc4DataOutput(oss.str(), false, fileComm, multifile, isCollective));
-         isOpen=true ;
-
-         data_out->writeFile(CFile::get(this));
-         std::vector<CField*>::iterator it, end = this->enabledFields.end();
-         for (it = this->enabledFields.begin() ;it != end; it++)
-         {
+        data_out = shared_ptr<CDataOutput>(new CNc4DataOutput(oss.str(), append, fileComm, multifile, isCollective));
+        isOpen = true;
+
+        data_out->writeFile(CFile::get(this));
+
+        // Do not recreate the file structure if opening an existing file
+        if (!data_out->IsInAppendMode())
+        {
+          std::vector<CField*>::iterator it, end = this->enabledFields.end();
+          for (it = this->enabledFields.begin(); it != end; it++)
+          {
             CField* field = *it;
             this->data_out->writeFieldGrid(field);
-         }
-         this->data_out->writeTimeDimension();
-         
-         for (it = this->enabledFields.begin() ;it != end; it++)
-         {
+          }
+          this->data_out->writeTimeDimension();
+
+          for (it = this->enabledFields.begin(); it != end; it++)
+          {
             CField* field = *it;
             this->data_out->writeField(field);
-         }
-         
-         vector<CVariable*> listVars = getAllVariables() ;
-         for (vector<CVariable*>::iterator it = listVars.begin() ;it != listVars.end(); it++) this-> data_out-> writeAttribute(*it) ;
-         
-         this->data_out->definition_end();
+          }
+
+          vector<CVariable*> listVars = getAllVariables() ;
+          for (vector<CVariable*>::iterator it = listVars.begin(); it != listVars.end(); it++)
+            this->data_out->writeAttribute(*it);
+
+          this->data_out->definition_end();
+        }
       }
    }
Index: XIOS/branchs/xios-1.0/src/output/nc4_data_output.cpp
===================================================================
--- XIOS/branchs/xios-1.0/src/output/nc4_data_output.cpp	(revision 738)
+++ XIOS/branchs/xios-1.0/src/output/nc4_data_output.cpp	(revision 798)
@@ -937,5 +937,6 @@
                                      this->getTimeStamp());
 
-           SuperClassWriter::addDimension("axis_nbounds", 2);
+           if (!appendMode)
+             SuperClassWriter::addDimension("axis_nbounds", 2);
          }
          catch (CNetCdfException& e)
Index: XIOS/branchs/xios-1.0/src/output/onetcdf4.cpp
===================================================================
--- XIOS/branchs/xios-1.0/src/output/onetcdf4.cpp	(revision 738)
+++ XIOS/branchs/xios-1.0/src/output/onetcdf4.cpp	(revision 798)
@@ -11,9 +11,9 @@
 
       CONetCDF4::CONetCDF4
-         (const StdString & filename, bool exist, const MPI_Comm * comm, bool multifile)
+         (const StdString & filename, bool append, const MPI_Comm * comm, bool multifile)
             : path()
             , wmpi(false)
       {
-         this->initialize(filename, exist, comm,multifile);
+         this->initialize(filename, append, comm,multifile);
       }
 
@@ -29,5 +29,5 @@
 
       void CONetCDF4::initialize
-         (const StdString & filename, bool exist, const MPI_Comm * comm, bool multifile)
+         (const StdString & filename, bool append, const MPI_Comm * comm, bool multifile)
       {
          // Don't use parallel mode if there is only one process
@@ -41,5 +41,6 @@
          wmpi = comm && !multifile;
 
-         if (!exist)
+         // If the file does not exist, we always create it
+         if (!append || !std::ifstream(filename.c_str()))
          {
             if (wmpi)
@@ -47,11 +48,23 @@
             else
                CNetCdfInterface::create(filename, NC_NETCDF4, this->ncidp);
+
+            this->appendMode = false;
+            this->recordOffset = 0;
          }
          else
          {
             if (wmpi)
-               CNetCdfInterface::openPar(filename, NC_NETCDF4|NC_MPIIO, *comm, MPI_INFO_NULL, this->ncidp);
+               CNetCdfInterface::openPar(filename, NC_NETCDF4|NC_MPIIO|NC_WRITE, *comm, MPI_INFO_NULL, this->ncidp);
             else
-               CNetCdfInterface::open(filename, NC_NETCDF4, this->ncidp);
+               CNetCdfInterface::open(filename, NC_NETCDF4|NC_WRITE, this->ncidp);
+
+            this->appendMode = true;
+            // Find out how many temporal records have been written already to the file we are opening
+            int ncUnlimitedDimId;
+            CNetCdfInterface::inqUnLimDim(this->ncidp, ncUnlimitedDimId);
+            if (ncUnlimitedDimId != -1)
+               CNetCdfInterface::inqDimLen(this->ncidp, ncUnlimitedDimId, this->recordOffset);
+            else
+               this->recordOffset = 0;
          }
       }
@@ -429,5 +442,5 @@
          if (iddims.begin()->compare(this->getUnlimitedDimensionName()) == 0)
          {
-            sstart.push_back(record);
+            sstart.push_back(record + recordOffset);
             scount.push_back(1);
             if ((start == NULL) &&
Index: XIOS/branchs/xios-1.0/src/output/onetcdf4.hpp
===================================================================
--- XIOS/branchs/xios-1.0/src/output/onetcdf4.hpp	(revision 738)
+++ XIOS/branchs/xios-1.0/src/output/onetcdf4.hpp	(revision 798)
@@ -26,5 +26,5 @@
 
             /// Constructeurs ///
-            CONetCDF4(const StdString & filename, bool exist, const MPI_Comm * comm = NULL, bool multifile=true);
+            CONetCDF4(const StdString & filename, bool append, const MPI_Comm * comm = NULL, bool multifile=true);
 
             CONetCDF4(const CONetCDF4 & onetcdf4);       // Not implemented.
@@ -33,5 +33,5 @@
 
             /// Initialisation ///
-            void initialize(const StdString & filename, bool exist, const MPI_Comm * comm, bool multifile);
+            void initialize(const StdString & filename, bool append, const MPI_Comm * comm, bool multifile);
             void close(void) ;
             void sync(void) ;
@@ -116,4 +116,7 @@
             int ncidp;
             bool wmpi;
+            /*! Number of records already written when opening an existing file.
+             *  always 0 when creating a new file */
+            size_t recordOffset;
             map<int,size_t> timeAxis ;
       }; // class CONetCDF4
