Index: /XIOS/trunk/src/io/nc4_data_output.cpp
===================================================================
--- /XIOS/trunk/src/io/nc4_data_output.cpp	(revision 773)
+++ /XIOS/trunk/src/io/nc4_data_output.cpp	(revision 774)
@@ -74,5 +74,5 @@
          StdString appendDomid  = (singleDomain) ? "" : "_"+domid ;
          if (isWrittenDomain(domid)) return ;
-         else writtenDomains.insert(domid) ;
+         else setWrittenDomain(domid);
 
 
@@ -450,5 +450,5 @@
          StdString domid = domain->getDomainOutputName();
          if (isWrittenDomain(domid)) return ;
-         else writtenDomains.insert(domid) ;
+         else setWrittenDomain(domid);
 
          StdString appendDomid  = (singleDomain) ? "" : "_"+domid ;
@@ -637,5 +637,5 @@
         StdString axisid = axis->getAxisOutputName();
         if (isWrittenAxis(axisid)) return ;
-        else writtenAxis.insert(axisid) ;
+        else setWrittenAxis(axisid);
 
         try
@@ -830,10 +830,12 @@
              {
                CDomain* domain = CDomain::get(domainList[idxDomain]);
+               StdString domId = domain->getDomainOutputName();
+
                if (!domain->isCompressible()
                     || domain->type == CDomain::type_attr::unstructured
-                    || domain->isWrittenCompressed(this->filename))
+                    || domain->isWrittenCompressed(this->filename)
+                    || isWrittenCompressedDomain(domId))
                  continue;
 
-               StdString domId = domain->getDomainOutputName();
                StdString appendDomId  = singleDomain ? "" : "_" + domId;
 
@@ -861,4 +863,5 @@
 
                domain->addRelFileCompressed(this->filename);
+               setWrittenCompressedDomain(domId);
                ++idxDomain;
              }
@@ -866,8 +869,11 @@
              {
                CAxis* axis = CAxis::get(axisList[idxAxis]);
-               if (!axis->isCompressible() || axis->isWrittenCompressed(this->filename))
+               StdString axisId = axis->getAxisOutputName();
+
+               if (!axis->isCompressible()
+                    || axis->isWrittenCompressed(this->filename)
+                    || isWrittenCompressedAxis(axisId))
                  continue;
 
-               StdString axisId = axis->getAxisOutputName();
                varId = axisId + "_points";
                compress = axisId;
@@ -885,4 +891,5 @@
 
                axis->addRelFileCompressed(this->filename);
+               setWrittenCompressedAxis(axisId);
                ++idxAxis;
              }
@@ -1967,3 +1974,45 @@
         return it->second;
       }
+
+      ///--------------------------------------------------------------
+
+      bool CNc4DataOutput::isWrittenDomain(const std::string& domainName) const
+      {
+        return (this->writtenDomains.find(domainName) != this->writtenDomains.end());
+      }
+
+      bool CNc4DataOutput::isWrittenCompressedDomain(const std::string& domainName) const
+      {
+        return (this->writtenCompressedDomains.find(domainName) != this->writtenCompressedDomains.end());
+      }
+
+      bool CNc4DataOutput::isWrittenAxis(const std::string& axisName) const
+      {
+        return (this->writtenAxis.find(axisName) != this->writtenAxis.end());
+      }
+
+      bool CNc4DataOutput::isWrittenCompressedAxis(const std::string& axisName) const
+      {
+        return (this->writtenCompressedAxis.find(axisName) != this->writtenCompressedAxis.end());
+      }
+
+      void CNc4DataOutput::setWrittenDomain(const std::string& domainName)
+      {
+        this->writtenDomains.insert(domainName);
+      }
+
+      void CNc4DataOutput::setWrittenCompressedDomain(const std::string& domainName)
+      {
+        this->writtenCompressedDomains.insert(domainName);
+      }
+
+      void CNc4DataOutput::setWrittenAxis(const std::string& axisName)
+      {
+        this->writtenAxis.insert(axisName);
+      }
+
+      void CNc4DataOutput::setWrittenCompressedAxis(const std::string& axisName)
+      {
+        this->writtenCompressedAxis.insert(axisName);
+      }
 } // namespace xios
Index: /XIOS/trunk/src/io/nc4_data_output.hpp
===================================================================
--- /XIOS/trunk/src/io/nc4_data_output.hpp	(revision 773)
+++ /XIOS/trunk/src/io/nc4_data_output.hpp	(revision 774)
@@ -95,4 +95,14 @@
             StdString getTimeStamp(void) const;
 
+            bool isWrittenDomain(const std::string& domainName) const;
+            bool isWrittenCompressedDomain(const std::string& domainName) const;
+            bool isWrittenAxis(const std::string& axisName) const;
+            bool isWrittenCompressedAxis(const std::string& axisName) const;
+
+            void setWrittenDomain(const std::string& domainName);
+            void setWrittenCompressedDomain(const std::string& domainName);
+            void setWrittenAxis(const std::string& axisName);
+            void setWrittenCompressedAxis(const std::string& axisName);
+
             /// PropriÃ©tÃ©s privÃ©es ///
             MPI_Comm comm_file;
@@ -100,8 +110,6 @@
             std::map<Time, StdSize> timeToRecordCache;
 
-            std::set<std::string> writtenDomains ; 
-            std::set<std::string> writtenAxis ;
-            bool isWrittenDomain(const std::string& domainName) { return this->writtenDomains.find(domainName) != this->writtenDomains.end(); }
-            bool isWrittenAxis(const std::string& axisName) { return this->writtenAxis.find(axisName) != this->writtenAxis.end(); }
+            std::set<std::string> writtenDomains, writtenCompressedDomains;
+            std::set<std::string> writtenAxis, writtenCompressedAxis;
       }; // class CNc4DataOutput
 
