Index: /XIOS/trunk/generic_testcase/context_atm.xml
===================================================================
--- /XIOS/trunk/generic_testcase/context_atm.xml	(revision 1919)
+++ /XIOS/trunk/generic_testcase/context_atm.xml	(revision 1920)
@@ -299,5 +299,5 @@
 
   <file_definition  type="one_file" >
-    <file id="atm_output_reduction" output_freq="6ts" type="one_file" enabled="true">
+    <file id="atm_output_reduction" output_freq="6ts" type="one_file" enabled="true" split_freq="12ts"  >
        <field field_ref="field2D" freq_op="3ts" operation="average" name="field2D_average"/>
        <field field_ref="field2D" freq_op="3ts" operation="accumulate" name="field2D_sum"/>
Index: /XIOS/trunk/src/calendar_util.cpp
===================================================================
--- /XIOS/trunk/src/calendar_util.cpp	(revision 1919)
+++ /XIOS/trunk/src/calendar_util.cpp	(revision 1920)
@@ -45,4 +45,75 @@
     }
 
+    bool operator<(const CDuration& dur1, const CDuration& dur2)
+    {
+      if (dur1.year < dur2.year)
+        return true;
+      else if (dur1.year == dur2.year)
+      {
+        if (dur1.month < dur2.month)
+          return true;
+        else if (dur1.month == dur2.month)
+        {
+          if (dur1.day < dur2.day)
+            return true;
+          else if (dur1.day == dur2.day)
+          {
+            if (dur1.hour < dur2.hour)
+              return true;
+            else if (dur1.hour == dur2.hour)
+            {
+              if (dur1.minute < dur2.minute)
+                return true;
+              else if (dur1.minute == dur2.minute)
+              {
+                if (dur1.second < dur2.second)
+                  return true;
+                else if (dur1.second == dur2.second)
+                  return (dur1.timestep < dur2.timestep);
+              }
+            }
+          }
+        }
+      }
+      return false;
+    }
+
+
+    bool operator>(const CDuration& dur1, const CDuration& dur2)
+    {
+      if (dur1.year > dur2.year)
+        return true;
+      else if (dur1.year == dur2.year)
+      {
+        if (dur1.month > dur2.month)
+          return true;
+        else if (dur1.month == dur2.month)
+        {
+          if (dur1.day > dur2.day)
+            return true;
+          else if (dur1.day == dur2.day)
+          {
+            if (dur1.hour > dur2.hour)
+              return true;
+            else if (dur1.hour == dur2.hour)
+            {
+              if (dur1.minute > dur2.minute)
+                return true;
+              else if (dur1.minute == dur2.minute)
+              {
+                if (dur1.second > dur2.second)
+                  return true;
+                else if (dur1.second == dur2.second)
+                  return (dur1.timestep > dur2.timestep);
+              }
+            }
+          }
+        }
+      }
+      return false;
+    }
+
+
+
     //-----------------------------------------------------------------
 
Index: /XIOS/trunk/src/calendar_util.hpp
===================================================================
--- /XIOS/trunk/src/calendar_util.hpp	(revision 1919)
+++ /XIOS/trunk/src/calendar_util.hpp	(revision 1920)
@@ -17,4 +17,7 @@
       CDuration operator-(const CDuration& ddr);
 
+      bool operator>(const CDuration& ddr, const CDuration& dr);
+      bool operator<(const CDuration& ddr, const CDuration& dr);
+      
       CDate operator+(const CDate& dt, const CDuration& dr); // Non testÃ©e.
       CDate operator-(const CDate& dt, const CDuration& dr);
Index: /XIOS/trunk/src/node/field.cpp
===================================================================
--- /XIOS/trunk/src/node/field.cpp	(revision 1919)
+++ /XIOS/trunk/src/node/field.cpp	(revision 1920)
@@ -2050,4 +2050,17 @@
          freq_op.setValue(TimeStep);
      }
+     else
+     {
+       //if(file->output_freq.getValue() < freq_op.getValue())
+       if(freq_op.getValue() > file->output_freq.getValue() )
+       {
+         ERROR("void CField::checkTimeAttributes(void)",
+               << "output file has output_freq < freq_op" << std::endl
+               << "field_id = "<< getId() << std::endl
+               << "file_id = "<< file->getId() << std::endl
+               << "output_freq = "<< file->output_freq.getValue() << std::endl
+               << "freq_op = "<< freq_op.getValue() << std::endl)
+       }
+     }
      if (freq_offset.isEmpty())
        freq_offset.setValue(isFieldRead ? NoneDu : (freq_op.getValue() - TimeStep));
