Index: trunk/Mars/mcorsika/MCorsikaRead.cc
===================================================================
--- trunk/Mars/mcorsika/MCorsikaRead.cc	(revision 19339)
+++ trunk/Mars/mcorsika/MCorsikaRead.cc	(revision 19340)
@@ -280,5 +280,5 @@
                {
                if (blockType == 1200)
-                  status = fRunHeader->ReadEvt(fInFormat);
+                  status = fRunHeader->ReadEvt(fInFormat, blockLength / sizeof(Float_t));
 
                else if(blockType == 1201)
@@ -287,7 +287,7 @@
                else if (blockType == 1202)
                   {
-                  Float_t buffer[272];
-                  status = fInFormat->Read(buffer, 272 * sizeof(Float_t));
-                  status = fRunHeader->ReadEventHeader(buffer);
+                  vector<Float_t> buffer(blockLength / sizeof(Float_t));
+                  status = fInFormat->Read(buffer.data(), blockLength);
+                  status = fRunHeader->ReadEventHeader(buffer.data());
                   break;
                   }
@@ -495,5 +495,5 @@
             {
             case 1200:       // the run header
-               status = fRunHeader->ReadEvt(fInFormat);
+               status = fRunHeader->ReadEvt(fInFormat, fBlockLength / sizeof(Float_t));
                fReadState = 1;  // RUNH is read
                break;
@@ -504,15 +504,15 @@
 
             case 1202:  // the event header
-               Float_t buffer[272];
-               if (!fInFormat->Read(buffer, 272 * sizeof(Float_t))) 
+               vector<Float_t> buffer(fBlockLength / sizeof(Float_t));
+               if (!fInFormat->Read(buffer.data(), fBlockLength))
                   return kFALSE;
 
                if (fReadState == 1)  // first event after RUN header
                   {
-                  fRunHeader->ReadEventHeader(buffer);
+                  fRunHeader->ReadEventHeader(buffer.data());
                   fRunHeader->Print();
                   }
 
-               status = fEvtHeader->ReadEvt(buffer);
+               status = fEvtHeader->ReadEvt(buffer.data());
                if (fArrayIdx >= (Int_t)fEvtHeader->GetTotReuse())
                   {
@@ -597,5 +597,5 @@
 
             case 1209:  // the event end
-               status = fEvtHeader->ReadEvtEnd(fInFormat);
+               status = fEvtHeader->ReadEvtEnd(fInFormat, fBlockLength / sizeof(Float_t));
 
                if (fReadState == 10 || fReadState == 2)
@@ -640,7 +640,12 @@
             case 1109:  // save corsika events
                fEvtHeader->InitXY();
-               status = fEvent->ReadCorsikaEvt(&fRawEvemtBuffer[0], 
-                                               fRawEvemtBuffer.size() / 7, 
+               status = fEvent->ReadCorsikaEvt(fRawEvemtBuffer,
+                                               fBlockLength == MCorsikaFormat::kBlockLengthRaw/21 - 4 ? 7 : 8,
                                                fEvtHeader->GetNumReuse()+1);
+
+               // Simulate wavelength for all bunches with a wavelength == 0
+               fEvent->SimWavelength(fRunHeader->GetWavelengthMin(),
+                                     fRunHeader->GetWavelengthMax());
+
                fEvtHeader->IncNumReuse();
 
