Index: trunk/MagicSoft/Mars/mreport/MReport.cc
===================================================================
--- trunk/MagicSoft/Mars/mreport/MReport.cc	(revision 2632)
+++ trunk/MagicSoft/Mars/mreport/MReport.cc	(revision 2678)
@@ -53,4 +53,6 @@
 // While skip are numbers which won't enter the analysis
 //
+// SetupReading must be called successfully before.
+//
 Bool_t MReport::InterpreteHeader(TString &str)
 {
@@ -70,12 +72,11 @@
 
     fState=state;
-    if (fTime)
-        if (!fTime->Set(yea, mon, day, hor, min, sec, ms))
-        {
-            *fLog << err << "ERROR - Event has invalid time: ";
-            *fLog << Form("%d.%d.%d %02s:%02d:%02d.%03d", day, mon, yea, hor, min, sec, ms);
-            *fLog << "... abort." << endl;
-            return kFALSE;
-        }
+    if (!fTime->Set(yea, mon, day, hor, min, sec, ms))
+    {
+        *fLog << err << "ERROR - Event has invalid time: ";
+        *fLog << Form("%d.%d.%d %02s:%02d:%02d.%03d", day, mon, yea, hor, min, sec, ms);
+        *fLog << "... abort." << endl;
+        return kFALSE;
+    }
 
     str.Remove(0, len);
@@ -102,8 +103,15 @@
 // when a corresponding time container exists.
 //
-Bool_t MReport::Interprete(TString &str)
+// SetupReading must be called successfully before.
+//
+Int_t MReport::Interprete(TString &str, const MTime &start, const MTime &stop)
 {
     if (!InterpreteHeader(str))
         return kFALSE;
+
+    if (start && *fTime<start)
+        return kCONTINUE;
+    if (stop  && *fTime>stop)
+        return kCONTINUE;
 
     if (!InterpreteBody(str))
@@ -111,6 +119,5 @@
 
     SetReadyToSave();
-    if (fTime)
-        fTime->SetReadyToSave();
+    fTime->SetReadyToSave();
 
     return kTRUE;
Index: trunk/MagicSoft/Mars/mreport/MReport.h
===================================================================
--- trunk/MagicSoft/Mars/mreport/MReport.h	(revision 2632)
+++ trunk/MagicSoft/Mars/mreport/MReport.h	(revision 2678)
@@ -27,5 +27,5 @@
     virtual Bool_t InterpreteBody(TString &str);
 
-    Bool_t Interprete(TString &str);
+    Int_t  Interprete(TString &str, const MTime &start, const MTime &stop);
     Bool_t CheckIdentifier(TString &str) const
     {
Index: trunk/MagicSoft/Mars/mreport/MReportFileRead.cc
===================================================================
--- trunk/MagicSoft/Mars/mreport/MReportFileRead.cc	(revision 2632)
+++ trunk/MagicSoft/Mars/mreport/MReportFileRead.cc	(revision 2678)
@@ -119,11 +119,13 @@
     MReport *GetReport() { return fReport; }
     //void SetTime(MTime *t) { fReport->SetTime(t); }
-    Bool_t Interprete(TString &str)
-    {
-        if (!fReport->Interprete(str))
+    Int_t Interprete(TString &str, const MTime &start, const MTime &stop)
+    {
+        const Int_t rc = fReport->Interprete(str, start, stop);
+
+        if (rc==kFALSE)
             return kFALSE;
 
         fNumReports++;
-        return kTRUE;
+        return rc;
     }
     Bool_t SetupReading(MParList &plist) { return fReport->SetupReading(plist); }
@@ -289,7 +291,5 @@
     while (!GetReport(rep))
     {
-        // Don't know the reason, but ReadLine and ReadString don't work
-        // for the (at least: converted) DC files.
-        str.ReadToDelim(*fIn);
+        str.ReadLine(*fIn);
         if (!*fIn)
         {
@@ -307,5 +307,6 @@
     }
 
-    if (!rep->Interprete(str))
+    const Int_t rc = rep->Interprete(str, fStart, fStop);
+    if (rc==kFALSE)
     {
         *fLog << err << "ERROR - Interpretation of '" << rep->GetName() << "' failed." << endl;
@@ -313,5 +314,5 @@
     }
 
-    return kTRUE;
+    return rc;
 }
 
Index: trunk/MagicSoft/Mars/mreport/MReportFileRead.h
===================================================================
--- trunk/MagicSoft/Mars/mreport/MReportFileRead.h	(revision 2632)
+++ trunk/MagicSoft/Mars/mreport/MReportFileRead.h	(revision 2678)
@@ -5,8 +5,12 @@
 #include "MTask.h"
 #endif
+#ifndef MARS_MTime
+#include "MTime.h"
+#endif
 
-// gcc 3.2
+/*// gcc 3.2
 //class ifstream;
 #include <iosfwd>
+*/
 
 class THashTable;
@@ -27,4 +31,7 @@
     THashTable *fList;
 
+    MTime fStart;            // Time range which should be read from file
+    MTime fStop;             // Time range which should be read from file
+
     enum { kHasNoHeader = BIT(14) };
 
@@ -43,4 +50,6 @@
 
     void SetHasNoHeader() { SetBit(kHasNoHeader); }
+    void SetTimeStart(const MTime &tm) { fStart = tm; }
+    void SetTimeStop(const MTime &tm)  { fStop = tm; }
 
     Bool_t AddToList(const char *name) const;
