Index: /XIOS/trunk/src/filter/file_writer_filter.cpp
===================================================================
--- /XIOS/trunk/src/filter/file_writer_filter.cpp	(revision 1118)
+++ /XIOS/trunk/src/filter/file_writer_filter.cpp	(revision 1119)
@@ -33,3 +33,8 @@
     field->sendUpdateData(data[0]->data);
   }
+
+  bool CFileWriterFilter::isDataExpected(const CDate& date) const
+  {
+    return true;
+  }
 } // namespace xios
Index: /XIOS/trunk/src/filter/file_writer_filter.hpp
===================================================================
--- /XIOS/trunk/src/filter/file_writer_filter.hpp	(revision 1118)
+++ /XIOS/trunk/src/filter/file_writer_filter.hpp	(revision 1119)
@@ -23,4 +23,11 @@
       CFileWriterFilter(CGarbageCollector& gc, CField* field);
 
+      /*!
+       * Tests whether data is expected for the specified date.
+       *
+       * \param date the date associated to the data
+       */
+      bool virtual isDataExpected(const CDate& date) const;
+
     protected:
       /*!
Index: /XIOS/trunk/src/filter/filter.cpp
===================================================================
--- /XIOS/trunk/src/filter/filter.cpp	(revision 1118)
+++ /XIOS/trunk/src/filter/filter.cpp	(revision 1119)
@@ -40,3 +40,8 @@
     return (CInputPin::canBeTriggered() || COutputPin::canBeTriggered());
   }
+
+  bool CFilter::isDataExpected(const CDate& date) const
+  {
+    return COutputPin::isDataExpected(date);
+  }
 } // namespace xios
Index: /XIOS/trunk/src/filter/filter.hpp
===================================================================
--- /XIOS/trunk/src/filter/filter.hpp	(revision 1118)
+++ /XIOS/trunk/src/filter/filter.hpp	(revision 1119)
@@ -48,4 +48,11 @@
       bool virtual canBeTriggered() const;
 
+      /*!
+       * Tests whether data is expected for the specified date.
+       *
+       * \param date the date associated to the data
+       */
+      bool virtual isDataExpected(const CDate& date) const;
+
     protected:
       IFilterEngine* engine; //!< The filter engine, might be the filter itself
Index: /XIOS/trunk/src/filter/input_pin.hpp
===================================================================
--- /XIOS/trunk/src/filter/input_pin.hpp	(revision 1118)
+++ /XIOS/trunk/src/filter/input_pin.hpp	(revision 1119)
@@ -60,4 +60,11 @@
 
       /*!
+       * Tests whether data is expected for the specified date.
+       *
+       * \param date the date associated to the data
+       */
+      bool virtual isDataExpected(const CDate& date) const = 0;
+
+      /*!
        * Removes all pending packets which are older than the specified timestamp.
        *
Index: /XIOS/trunk/src/filter/output_pin.cpp
===================================================================
--- /XIOS/trunk/src/filter/output_pin.cpp	(revision 1118)
+++ /XIOS/trunk/src/filter/output_pin.cpp	(revision 1119)
@@ -73,4 +73,16 @@
   }
 
+  bool COutputPin::isDataExpected(const CDate& date) const
+  {
+    std::vector<std::pair<boost::shared_ptr<CInputPin>, size_t> >::const_iterator it, itEnd;
+    for (it = outputs.begin(), itEnd = outputs.end(); it != itEnd; ++it)
+    {
+      if (it->first->isDataExpected(date))
+        return true;
+    }
+
+    return false;
+  }
+
   void COutputPin::invalidate(Time timestamp)
   {
Index: /XIOS/trunk/src/filter/output_pin.hpp
===================================================================
--- /XIOS/trunk/src/filter/output_pin.hpp	(revision 1118)
+++ /XIOS/trunk/src/filter/output_pin.hpp	(revision 1119)
@@ -46,4 +46,11 @@
 
       /*!
+       * Tests whether data is expected for the specified date.
+       *
+       * \param date the date associated to the data
+       */
+      bool virtual isDataExpected(const CDate& date) const;
+
+      /*!
        * Removes all pending packets which are older than the specified timestamp.
        *
Index: /XIOS/trunk/src/filter/store_filter.cpp
===================================================================
--- /XIOS/trunk/src/filter/store_filter.cpp	(revision 1118)
+++ /XIOS/trunk/src/filter/store_filter.cpp	(revision 1119)
@@ -81,4 +81,9 @@
   }
 
+  bool CStoreFilter::isDataExpected(const CDate& date) const
+  {
+    return true;
+  }
+
   void CStoreFilter::invalidate(Time timestamp)
   {
Index: /XIOS/trunk/src/filter/store_filter.hpp
===================================================================
--- /XIOS/trunk/src/filter/store_filter.hpp	(revision 1118)
+++ /XIOS/trunk/src/filter/store_filter.hpp	(revision 1119)
@@ -50,4 +50,11 @@
 
       /*!
+       * Tests whether data is expected for the specified date.
+       *
+       * \param date the date associated to the data
+       */
+      bool virtual isDataExpected(const CDate& date) const;
+
+      /*!
        * Removes all pending packets which are older than the specified timestamp.
        *
Index: /XIOS/trunk/src/filter/temporal_filter.cpp
===================================================================
--- /XIOS/trunk/src/filter/temporal_filter.cpp	(revision 1118)
+++ /XIOS/trunk/src/filter/temporal_filter.cpp	(revision 1119)
@@ -75,3 +75,8 @@
     return packet;
   }
+
+  bool CTemporalFilter::isDataExpected(const CDate& date) const
+  {
+    return isOnceOperation ? isFirstOperation : (date >= nextSamplingDate || date + samplingFreq > nextOperationDate);
+  }
 } // namespace xios
Index: /XIOS/trunk/src/filter/temporal_filter.hpp
===================================================================
--- /XIOS/trunk/src/filter/temporal_filter.hpp	(revision 1118)
+++ /XIOS/trunk/src/filter/temporal_filter.hpp	(revision 1119)
@@ -40,4 +40,11 @@
       CDataPacketPtr virtual apply(std::vector<CDataPacketPtr> data);
 
+      /*!
+       * Tests whether data is expected for the specified date.
+       *
+       * \param date the date associated to the data
+       */
+      bool virtual isDataExpected(const CDate& date) const;
+
     private:
       boost::scoped_ptr<func::CFunctor> functor; //!< The functor corresponding to the temporal operation
Index: /XIOS/trunk/src/interface/c/icfield.cpp
===================================================================
--- /XIOS/trunk/src/interface/c/icfield.cpp	(revision 1118)
+++ /XIOS/trunk/src/interface/c/icfield.cpp	(revision 1119)
@@ -76,8 +76,8 @@
 // -----------------------------------------------------------------------------------------------------   
 
-  void cxios_field_is_active (XFieldPtr field_hdl, bool* ret)
+  void cxios_field_is_active (XFieldPtr field_hdl, bool at_current_timestep, bool* ret)
   {
     CTimer::get("XIOS").resume() ;
-    *ret = field_hdl->isActive();
+    *ret = field_hdl->isActive(at_current_timestep);
     CTimer::get("XIOS").suspend() ;
   }
Index: /XIOS/trunk/src/interface/fortran/field_interface.f90
===================================================================
--- /XIOS/trunk/src/interface/fortran/field_interface.f90	(revision 1118)
+++ /XIOS/trunk/src/interface/fortran/field_interface.f90	(revision 1119)
@@ -18,7 +18,8 @@
       END SUBROUTINE cxios_field_valid_id
 
-      SUBROUTINE cxios_field_is_active(field_hdl, ret) BIND(C)
+      SUBROUTINE cxios_field_is_active(field_hdl, at_current_timestep, ret) BIND(C)
          USE ISO_C_BINDING
          INTEGER  (kind = C_INTPTR_T), VALUE        :: field_hdl
+         LOGICAL  (kind = C_BOOL), VALUE            :: at_current_timestep
          LOGICAL  (kind = C_BOOL)                   :: ret
       END SUBROUTINE cxios_field_is_active
Index: /XIOS/trunk/src/interface/fortran/ifield.F90
===================================================================
--- /XIOS/trunk/src/interface/fortran/ifield.F90	(revision 1118)
+++ /XIOS/trunk/src/interface/fortran/ifield.F90	(revision 1119)
@@ -142,26 +142,32 @@
    END FUNCTION  xios(is_valid_fieldgroup)
    
-  LOGICAL FUNCTION xios(field_is_active_id(field_id))
+  LOGICAL FUNCTION xios(field_is_active_id)(field_id, at_current_timestep_arg)
       IMPLICIT NONE
-      CHARACTER(len  = *)    , INTENT(IN) :: field_id
-      LOGICAL  (kind = 1)                 :: val
-      TYPE(txios(field))                 :: field_hdl
-      
+      CHARACTER(len  = *) , INTENT(IN) :: field_id
+      LOGICAL, OPTIONAL   , INTENT(IN) :: at_current_timestep_arg
+      TYPE(txios(field))               :: field_hdl
+
       CALL xios(get_field_handle)(field_id,field_hdl)
-      xios(field_is_active_id)=xios(field_is_active_hdl(field_hdl))
+      xios(field_is_active_id) = xios(field_is_active_hdl)(field_hdl, at_current_timestep_arg)
 
-   END FUNCTION  xios(field_is_active_id)
-   
-   
-   LOGICAL FUNCTION xios(field_is_active_hdl(field_hdl))
+   END FUNCTION xios(field_is_active_id)
+
+   LOGICAL FUNCTION xios(field_is_active_hdl)(field_hdl, at_current_timestep_arg)
       IMPLICIT NONE
-      TYPE(txios(field)),INTENT(IN)       :: field_hdl
-      LOGICAL  (kind = 1)                 :: ret
-      
-      CALL cxios_field_is_active(field_hdl%daddr, ret);
+      TYPE(txios(field)) , INTENT(IN) :: field_hdl
+      LOGICAL, OPTIONAL  , INTENT(IN) :: at_current_timestep_arg
+      LOGICAL(kind = C_BOOL)          :: at_current_timestep
+      LOGICAL(kind = C_BOOL)          :: ret
+
+      IF (PRESENT(at_current_timestep_arg)) THEN
+         at_current_timestep = at_current_timestep_arg
+      ELSE
+         at_current_timestep = .FALSE.
+      ENDIF
+
+      CALL cxios_field_is_active(field_hdl%daddr, at_current_timestep, ret);
       xios(field_is_active_hdl) = ret
       
-   END FUNCTION  xios(field_is_active_hdl) 
+   END FUNCTION xios(field_is_active_hdl)
  
-
 END MODULE IFIELD
Index: /XIOS/trunk/src/node/field.cpp
===================================================================
--- /XIOS/trunk/src/node/field.cpp	(revision 1118)
+++ /XIOS/trunk/src/node/field.cpp	(revision 1119)
@@ -518,7 +518,10 @@
    //----------------------------------------------------------------
 
-   bool CField::isActive(void) const
-   {
-      return (instantDataFilter != NULL);
+   bool CField::isActive(bool atCurrentTimestep /*= false*/) const
+   {
+      if (atCurrentTimestep && clientSourceFilter)
+        return clientSourceFilter->isDataExpected(CContext::getCurrent()->getCalendar()->getCurrentDate());
+      else
+        return (instantDataFilter != NULL);
    }
 
Index: /XIOS/trunk/src/node/field.hpp
===================================================================
--- /XIOS/trunk/src/node/field.hpp	(revision 1118)
+++ /XIOS/trunk/src/node/field.hpp	(revision 1119)
@@ -97,5 +97,5 @@
 
        public:
-         bool isActive(void) const;
+         bool isActive(bool atCurrentTimestep = false) const;
          bool hasOutputFile;
 
