Index: trunk/MagicSoft/Mars/mreport/MReport.cc
===================================================================
--- trunk/MagicSoft/Mars/mreport/MReport.cc	(revision 2556)
+++ trunk/MagicSoft/Mars/mreport/MReport.cc	(revision 2557)
@@ -45,7 +45,8 @@
 
     int n = sscanf(str.Data(),
+                   fHasReportTime ?
                    " %d %*d %*d %*d %d %d %d %d "
-                   "%*d %*d %*d %*d %*d %*d %*d %*d"
-                   "%n",
+                   "%*d %*d %*d %*d %*d %*d %*d %*d %n" :
+                   " %d %*d %*d %*d %d %d %d %d ",
                    &state, &hor, &min, &sec, &ms, &len);
     if (n!=5)
Index: trunk/MagicSoft/Mars/mreport/MReport.h
===================================================================
--- trunk/MagicSoft/Mars/mreport/MReport.h	(revision 2556)
+++ trunk/MagicSoft/Mars/mreport/MReport.h	(revision 2557)
@@ -12,5 +12,6 @@
 {
 private:
-    const TString fIdentifier; //!
+    const TString fIdentifier;    //!
+    const Bool_t  fHasReportTime; //!
 
     Byte_t  fState;
@@ -21,5 +22,5 @@
 
 public:
-    MReport(const char *id) : fIdentifier(id), fState(0xff), fTime(0) { }
+    MReport(const char *id, Bool_t time=kTRUE) : fIdentifier(id), fHasReportTime(time), fState(0xff), fTime(0) { }
 
     virtual Bool_t SetupReading(MParList &plist);
Index: trunk/MagicSoft/Mars/mreport/MReportCamera.cc
===================================================================
--- trunk/MagicSoft/Mars/mreport/MReportCamera.cc	(revision 2556)
+++ trunk/MagicSoft/Mars/mreport/MReportCamera.cc	(revision 2557)
@@ -106,8 +106,14 @@
         return kFALSE;
 
-    for (int i=0; i<577; i++)
-    {
-        const Char_t hex[4] = { str[i*3], str[i*3+1], str[i*3+2], 0 };
-        const Int_t n=sscanf(hex, "%3hx", &fHV->fHV[i]);
+    const char *pos = str.Data();
+    const char *end = str.Data()+577*3;
+
+    Int_t i=0;
+    while (pos<end)
+    {
+        const Char_t hex[4] = { pos[0], pos[1], pos[2], 0 };
+        pos += 3;
+
+        const Int_t n=sscanf(hex, "%3hx", &fHV->fHV[i++]);
         if (n==1)
             continue;
@@ -116,5 +122,6 @@
         return kFALSE;
     }
-    str.Remove(0, 577*3); // Remove DC currents
+
+    str.Remove(0, end-str.Data()); // Remove DC currents
     str=str.Strip(TString::kLeading);
     return kTRUE;
Index: trunk/MagicSoft/Mars/mreport/MReportDrive.cc
===================================================================
--- trunk/MagicSoft/Mars/mreport/MReportDrive.cc	(revision 2556)
+++ trunk/MagicSoft/Mars/mreport/MReportDrive.cc	(revision 2557)
@@ -69,6 +69,4 @@
     str = str.Strip(TString::kBoth);
 
-    *fLog << dbg << "D" << flush;
-
     return str.IsNull();
 }
Index: trunk/MagicSoft/Mars/mreport/MReportDrive.h
===================================================================
--- trunk/MagicSoft/Mars/mreport/MReportDrive.h	(revision 2556)
+++ trunk/MagicSoft/Mars/mreport/MReportDrive.h	(revision 2557)
@@ -28,5 +28,19 @@
     Bool_t InterpreteBody(TString &str);
 
-    ClassDef(MReportDrive, 0) // Base class for control reports
+    Double_t GetMjd() const           { return fMjd;       }
+
+    Double_t GetRa() const            { return fRa;        }
+    Double_t GetDec() const           { return fDec;       }
+    Double_t GetHa() const            { return fHa;        }
+
+        Double_t GetNominalZd() const { return fNominalZd; }
+    Double_t GetNominalAz() const     { return fNominalAz; }
+    Double_t GetCurrentZd() const     { return fCurrentZd; }
+    Double_t GetCurrentAz() const     { return fCurrentAz; }
+
+    Double_t GetErrorZd() const       { return fErrorZd;   }
+    Double_t GetErrorAz() const       { return fErrorAz;   }
+
+    ClassDef(MReportDrive, 1) // Base class for control reports
 };
 
