Index: trunk/Mars/ceres.rc
===================================================================
--- trunk/Mars/ceres.rc	(revision 18035)
+++ trunk/Mars/ceres.rc	(revision 18038)
@@ -237,3 +237,5 @@
 # MFixTimeOffset.FileName: resmc/fact/AllPhidoFiles_delays.csv
 
+ResidualTimeSpread.Val: 0.0
+
 # last line comment
Index: trunk/Mars/mjobs/MJSimulation.cc
===================================================================
--- trunk/Mars/mjobs/MJSimulation.cc	(revision 18035)
+++ trunk/Mars/mjobs/MJSimulation.cc	(revision 18038)
@@ -650,4 +650,5 @@
     write3af.AddContainer("ElectronicNoise",  "RunHeaders", kTRUE, 1);
     write3af.AddContainer("IntendedPulsePos", "RunHeaders", kTRUE, 1);
+    write3af.AddContainer("ResidualTimeSpread", "RunHeaders", kTRUE, 1);
     write3af.AddContainer("MRawEvtData",      "Events");
     write3af.AddContainer("MTruePhotonsPerPixelCont", "Events");
@@ -726,4 +727,11 @@
     );
     plist.AddToList(&fix_time_offsets_between_pixels_in_ns);
+
+    // -------------------------------------------------------------------
+
+    // Jens Buss on: residual time spread
+    MParameterD resTimeSpread("ResidualTimeSpread");
+    resTimeSpread.SetVal(0.0);
+    plist.AddToList(&resTimeSpread);
 
     // -------------------------------------------------------------------
Index: trunk/Mars/msimcamera/MSimCamera.cc
===================================================================
--- trunk/Mars/msimcamera/MSimCamera.cc	(revision 18035)
+++ trunk/Mars/msimcamera/MSimCamera.cc	(revision 18038)
@@ -180,4 +180,10 @@
     }
  */
+    fResidualTimeSpread = (MParameterD*)pList->FindObject("ResidualTimeSpread");
+    if (!fResidualTimeSpread)
+    {
+        *fLog << err << "ResidualTimeSpread [MParameterD] not found... aborting." << endl;
+        return kFALSE;
+    }
 
     // Create it here to make sure that MGeomApply will set the correct size
@@ -305,7 +311,18 @@
     fCamera->SetValidRange(TMath::FloorNint(pr), TMath::CeilNint(nlen+pl));
 
+    Double_t timeoffset[npix];
+
+
     // Add electronic noise to empty channels
     for (UInt_t i=0; i<npix; i++)
     {
+
+        // Get the ResidualTimeSpread Parameter
+        const Double_t residualTimeSpread = fResidualTimeSpread->GetVal();
+
+        // Jens Buss on residual time spread:
+        // randomly draw an additional time offset to be added to the arrivaltime 
+        // from a gaussian normal distribution with a given standard deviation 
+        timeoffset[i] = gRandom->Gaus(0.0, residualTimeSpread);
         const MPedestalPix &pix = (*fElectronicNoise)[i];
 
@@ -405,4 +422,5 @@
     //--------------------------------------------------------------------------
 
+    
     // Simulate pulses
     for (Int_t i=0; i<num; i++)
@@ -419,4 +437,8 @@
         // column to hold the offsets in ns.
         t = t + freq*fFixTimeOffsetsBetweenPixelsInNs->fM[idx][0];
+
+        // Jens Buss on residual time spread:
+        // add random time offset to the arrivaltimes
+        t = t + timeoffset[idx];
 
         // FIXME: Time jitter?
Index: trunk/Mars/msimcamera/MSimCamera.h
===================================================================
--- trunk/Mars/msimcamera/MSimCamera.h	(revision 18035)
+++ trunk/Mars/msimcamera/MSimCamera.h	(revision 18038)
@@ -36,4 +36,5 @@
 
     MParameterD       *fCrosstalkCoeffParam;
+    MParameterD       *fResidualTimeSpread;    //! Container to store a standard deviation for a residual time spread
 
     MMatrix *fFixTimeOffsetsBetweenPixelsInNs; //! Container to store the fix temporal offsets for each pixel in ns
