Index: branches/Mars_MC/mraw/MRawFitsRead.cc
===================================================================
--- branches/Mars_MC/mraw/MRawFitsRead.cc	(revision 17087)
+++ branches/Mars_MC/mraw/MRawFitsRead.cc	(revision 17162)
@@ -159,16 +159,25 @@
     fRawRunHeader->SetRunInfo(0, fin.GetUInt("NIGHT"), fin.GetUInt("RUNID"));
     fRawRunHeader->InitFact(fin.GetUInt("NPIX")/9, 9, fin.GetUInt("NROI"), fPixelMap.size()==0?0:fPixelMap.data());
-    fRawRunHeader->SetFormat(0xf172, fin.GetUInt("BLDVER"));
+    if (!fin.HasKey("ISMC")){
+        fRawRunHeader->SetFormat(0xf172, fin.GetUInt("BLDVER"));
+    }
     fRawRunHeader->SetRunType(0/*data*/);
 
-    const string runstart = fin.GetStr("DATE-OBS");
-    const string runstop  = fin.GetStr("DATE-END");
-
-    fRawRunHeader->SetRunTime(MTime(runstart.c_str()), MTime(runstop.c_str()));
-
-    return
-        fin.HasKey("NPIX") && fin.HasKey("RUNID")  &&
-        fin.HasKey("NROI") && fin.HasKey("BLDVER") &&
-        fin.HasKey("NIGHT");
+    if (!fin.HasKey("ISMC")){
+        const string runstart = fin.GetStr("DATE-OBS");
+        const string runstop  = fin.GetStr("DATE-END");
+
+        fRawRunHeader->SetRunTime(MTime(runstart.c_str()), MTime(runstop.c_str()));
+    }
+
+    if (!fin.HasKey("ISMC"))
+        return
+            fin.HasKey("NPIX") && fin.HasKey("RUNID")  &&
+            fin.HasKey("NROI") && fin.HasKey("BLDVER") &&
+            fin.HasKey("NIGHT");
+    else
+        return
+            fin.HasKey("NPIX") && fin.HasKey("RUNID")  &&
+            fin.HasKey("NROI") && fin.HasKey("NIGHT");
 }
 
@@ -195,11 +204,16 @@
         return kFALSE;
 
-    fPCTime.resize(2);
-    if (!fin.SetVecAddress("UnixTimeUTC", fPCTime))
-        if (!fin.SetVecAddress("PCTime", fPCTime))
+    if (!fin.HasKey("ISMC")){
+        fPCTime.resize(2);
+        if (!fin.SetVecAddress("UnixTimeUTC", fPCTime))
+            if (!fin.SetVecAddress("PCTime", fPCTime))
+                return kFALSE;
+
+        if (!fin.SetPtrAddress("BoardTime", fRawBoards->fFadTime, 40))
             return kFALSE;
-
-    if (!fin.SetPtrAddress("BoardTime", fRawBoards->fFadTime, 40))
-        return kFALSE;
+    }
+    else
+        fIsMc = kTRUE;
+
 
     if (!fin.SetPtrAddress("Data", (int16_t*)(*data)->GetArray(), (*data)->GetSize()/2))
@@ -219,5 +233,6 @@
         return kFALSE;
 
-    fRawEvtTime->SetUnixTime(fPCTime[0], fPCTime[1]);
+    if (!fIsMc)
+        fRawEvtTime->SetUnixTime(fPCTime[0], fPCTime[1]);
 
     // FIXME: Correctly sort the pixels here!
