diff --git a/reco/detectors/tof/CbmTofCalibrator.cxx b/reco/detectors/tof/CbmTofCalibrator.cxx
index 17aa4ffc99fa4d81e49c3763f3c0ff2d79f9dde5..d354ae9183c708b5a1767f439ea80182a6df7068 100644
--- a/reco/detectors/tof/CbmTofCalibrator.cxx
+++ b/reco/detectors/tof/CbmTofCalibrator.cxx
@@ -43,6 +43,8 @@ CbmTofCalibrator::CbmTofCalibrator()
   , fDigiBdfPar(NULL)
   , fTofDigiMatchColl(NULL)
   , fhCalR0(NULL)
+  , fhCalDX0(NULL)
+  , fhCalDY0(NULL)
   , fhCalPos()
   , fhCalTOff()
   , fhCalTot()
@@ -131,6 +133,10 @@ Bool_t CbmTofCalibrator::CreateCalHist() {
 
   fhCalR0 = new TH1D(
     "hCalR0", "Tracklet distance to nominal vertex; R_0 [cm]", 100, 0., 0.5);
+  fhCalDX0 = new TH1D(
+    "hCalDX0", "Tracklet distance to nominal vertex; #DeltaX_0 [cm]", 100, -0.5, 0.5);
+  fhCalDY0 = new TH1D(
+    "hCalDY0", "Tracklet distance to nominal vertex; #DeltaY_0 [cm]", 100, -0.5, 0.5);
 
   fhCalPos.resize(iNbDet);
   fhCalTOff.resize(iNbDet);
@@ -246,6 +252,9 @@ void CbmTofCalibrator::FillCalHist(CbmTofTracklet* pTrk, Int_t iOpt) {
     fhCalR0->Fill(pTrk->GetR0());
     if (pTrk->GetR0() > fdR0Lim) return;
   }
+  fhCalDX0->Fill(pTrk->GetFitX(0.));
+  fhCalDY0->Fill(pTrk->GetFitY(0.));
+
   for (Int_t iHit = 0; iHit < pTrk->GetNofHits(); iHit++) {
     CbmTofHit* pHit = pTrk->GetTofHitPointer(iHit);
     Int_t iDetId    = (pHit->GetAddress() & DetMask);
@@ -353,7 +362,7 @@ void CbmTofCalibrator::FillCalHist(CbmTofTracklet* pTrk, Int_t iOpt) {
       }
       Int_t iWalkMode = (iOpt - iOpt % 10) / 10;
       switch (iWalkMode) {
-        case 0:
+        case 1:
           fhCalWalk[iDetIndx][iCh0][iSide0]->Fill(
             tDigi0->GetTot(),
             tDigi0->GetTime()
@@ -362,7 +371,7 @@ void CbmTofCalibrator::FillCalHist(CbmTofTracklet* pTrk, Int_t iOpt) {
               - pTrk->GetFitT(
                 pHit
                   ->GetZ())  //-fTrackletTools->GetTexpected(pTrk, iDetId, pHit)
-              + fTofFindTracks->GetTOff(iDetId)
+	              + fTofFindTracks->GetTOff(iDetId)
               + 2. * (1. - 2. * tDigi0->GetSide()) * (hlocal_d[1] - hlocal_f[1])
                   / fDigiBdfPar->GetSigVel(iSmType, iSm, iRpc));
           /*
@@ -388,10 +397,11 @@ void CbmTofCalibrator::FillCalHist(CbmTofTracklet* pTrk, Int_t iOpt) {
                   / fDigiBdfPar->GetSigVel(iSmType, iSm, iRpc));
           break;
 
-        case 1: {
+        case 0: {
           Double_t dDeltaT = 0.5 * (tDigi0->GetTime() + tDigi1->GetTime())
-                             - pTrk->GetFitT(pHit->GetZ());
-          fhCalWalk[iDetIndx][iCh1][iSide0]->Fill(tDigi0->GetTot(), dDeltaT);
+                           + fTofFindTracks->GetTOff(iDetId)
+                           - pTrk->GetFitT(pHit->GetZ());
+          fhCalWalk[iDetIndx][iCh0][iSide0]->Fill(tDigi0->GetTot(), dDeltaT);
           fhCalWalk[iDetIndx][iCh1][iSide1]->Fill(tDigi1->GetTot(), dDeltaT);
         } break;
       }
@@ -478,6 +488,7 @@ Bool_t CbmTofCalibrator::UpdateCalHist(Int_t iOpt) {
         }
       } break;
       case 2:  // update individual channel walks
+    	if(iSmType==5) continue; // no walk correction for beam counter
         const Double_t MinCounts = 10.;
         Int_t iNbCh              = fDigiBdfPar->GetNbChan(iSmType, iRpc);
         for (Int_t iCh = 0; iCh < iNbCh; iCh++) {