Index: /trunk/MagicSoft/Mars/Changelog
===================================================================
--- /trunk/MagicSoft/Mars/Changelog	(revision 5060)
+++ /trunk/MagicSoft/Mars/Changelog	(revision 5061)
@@ -27,4 +27,10 @@
    * mhbase/MH.cc, mfilter/MFDeltaT.cc:
      - Form %5.1 when printing statistics
+
+   * mfilter/MFDeltaT.cc:
+     - enhaced filter criterias
+
+   * mbase/MTime.h:
+     - added IsMidnight
 
 
Index: /trunk/MagicSoft/Mars/mbase/MTime.h
===================================================================
--- /trunk/MagicSoft/Mars/mbase/MTime.h	(revision 5060)
+++ /trunk/MagicSoft/Mars/mbase/MTime.h	(revision 5061)
@@ -115,4 +115,6 @@
     UInt_t Sec() const   { Byte_t h, m, s; GetTime(h,m,s); return s; }
 
+    Bool_t IsMidnight() const { return (Long_t)fTime==0 && fNanoSec==0; }
+
     // I/O functions
     istream &ReadBinary(istream &fin);
Index: /trunk/MagicSoft/Mars/mfilter/MFDeltaT.cc
===================================================================
--- /trunk/MagicSoft/Mars/mfilter/MFDeltaT.cc	(revision 5060)
+++ /trunk/MagicSoft/Mars/mfilter/MFDeltaT.cc	(revision 5061)
@@ -78,5 +78,5 @@
     fNameTime   = time;
 
-    fErrors.Set(5);
+    fErrors.Set(6);
 
     AddToBranchList(Form("%s.*", (const char*)fNameTime));
@@ -117,20 +117,21 @@
     fResult = kFALSE;
 
-    const Double_t dt = *fTime - fLastTime;
-    fLastTime = *fTime;
-
     Int_t i=0;
 
     if (GetNumExecutions()>0)
     {
-        if (dt<0)
+        if (*fTime-fLastTime>fUpperLimit)
             i=1;
-        if (dt==0)
+        if (*fTime<fLastTime)
             i=2;
-        if (dt>fUpperLimit)
+        if (*fTime==fLastTime)
             i=3;
-        if (TMath::Floor(fTime->GetMjd())==fTime->GetMjd())
+        if (fTime->IsMidnight())
             i=4;
+        if (*fTime==MTime())
+            i=5;
     }
+
+    fLastTime = *fTime;
 
     fResult = i==0;
@@ -151,8 +152,9 @@
     *fLog << GetDescriptor() << " filter statistics:" << endl;
     *fLog << dec << setfill(' ');
-    PrintSkipped(fErrors[1], "Delta-T  < 0");
-    PrintSkipped(fErrors[2], "Delta-T == 0");
-    PrintSkipped(fErrors[3], Form("Delta-T  > %.2fs", fUpperLimit));
-    PrintSkipped(fErrors[4], "Delta-T == floor(Delta-T)");
+    PrintSkipped(fErrors[2], "Delta-T  < 0");
+    PrintSkipped(fErrors[3], "Delta-T == 0");
+    PrintSkipped(fErrors[1], Form("Delta-T  > %.2fs", fUpperLimit));
+    PrintSkipped(fErrors[4], "MTime is midnight");
+    PrintSkipped(fErrors[5], "MTime not initialized");
     *fLog << " " << (int)fErrors[0] << " (";
     *fLog << Form("5.1f", 100.*fErrors[0]/GetNumExecutions());
