diff --git a/reco/littrack/cbm/base/CbmLitToolFactory.cxx b/reco/littrack/cbm/base/CbmLitToolFactory.cxx
index 10b3c405c243070024467d29214320a913c73d82..8ec7e8200d7cd522aeab3b4ef0a00d233aff0305 100644
--- a/reco/littrack/cbm/base/CbmLitToolFactory.cxx
+++ b/reco/littrack/cbm/base/CbmLitToolFactory.cxx
@@ -213,7 +213,7 @@ HitToTrackMergerPtr CbmLitToolFactory::CreateHitToTrackMerger(const std::string&
     nhMerger->SetLinePropagator(CreateTrackPropagator("line"));
     nhMerger->SetFilter(CreateTrackUpdate("kalman"));
     nhMerger->SetPDG(211);
-    nhMerger->SetChiSqCut(50.);  //13.86);
+    nhMerger->SetChiSqCut(-1.);  //50.);  //13.86);
     return HitToTrackMergerPtr(nhMerger);
   }
   else if (name == "tof_all_hits") {
diff --git a/reco/littrack/cbm/reco/CbmLitFindGlobalTracks.cxx b/reco/littrack/cbm/reco/CbmLitFindGlobalTracks.cxx
index b13bf39ead567233cb9f6c130ba5a030145a27be..ca7a8bcc487ac94eb1a3d69f8f8499e639f2736d 100644
--- a/reco/littrack/cbm/reco/CbmLitFindGlobalTracks.cxx
+++ b/reco/littrack/cbm/reco/CbmLitFindGlobalTracks.cxx
@@ -609,25 +609,14 @@ void CbmLitFindGlobalTracks::RunTrackReconstruction()
 
 void CbmLitFindGlobalTracks::SelectTracksForTofMerging()
 {
-  // The aim of this procedure is to select only those tracks
-  // which have at least one hit in the last station group.
-  // Only those tracks will be propagated further and merged
-  // with TOF hits.
-
-  Int_t nofStations = CbmLitTrackingGeometryConstructor::Instance()->GetNofMuchTrdStations();
-  //   Int_t stationCut = nofStations - 4;
-  // TODO: Fix this issue in a better way. This is done only as an ugly fix
-  // FU 19.09.13
-  Int_t stationCut = nofStations - 3;
+  // Select tracks for merging with TOF.
+  // Currently all tracks are selected, no matter if they have hits in TRD / MUCH or not.
+  // The only requirement is the numerical quality of the covariance matrix. -- Sergey Gorbunov
 
   for (TrackPtrIterator it = fLitOutputTracks.begin(); it != fLitOutputTracks.end(); it++) {
     CbmLitTrack* track = *it;
     if (track->GetQuality() == kLITBAD) { continue; }
-    const CbmLitHit* hit = track->GetHit(track->GetNofHits() - 1);
-    if (hit->GetStation() >= stationCut) {
-      // OK select this track for further merging with TOF
-      track->SetQuality(kLITGOODMERGE);
-    }
+    track->SetQuality(kLITGOODMERGE);
   }
 }
 
diff --git a/reco/littrack/std/data/CbmLitTrack.h b/reco/littrack/std/data/CbmLitTrack.h
index 2aec9e196fcc56229dac61f2f239a17717c459c8..e5619d36888c45e213a615c155cc2436310ad94a 100644
--- a/reco/littrack/std/data/CbmLitTrack.h
+++ b/reco/littrack/std/data/CbmLitTrack.h
@@ -131,10 +131,10 @@ public:
   {
     std::vector<litfloat> covFirst(fParamFirst.GetCovMatrix());
     std::vector<litfloat> covLast(fParamLast.GetCovMatrix());
-    for (Int_t i = 0; i < 21; i++) {
+    // don't check the time error, because time can be unmeasured -- S.Gorbunov
+    for (Int_t i = 0; i < 15; i++) {
       if (std::abs(covFirst[i]) > 10000. || std::abs(covLast[i]) > 10000.) { return false; }
     }
-    if (GetNofHits() < 1) { return false; }
     return true;
   }
 
diff --git a/reco/littrack/std/finder/CbmLitNearestHitTofMerger.cxx b/reco/littrack/std/finder/CbmLitNearestHitTofMerger.cxx
index d71e6f009e9aa2dc323e4a4d3efe2fa65b29f118..f5c92458632f5f86e4e0e516eae05694f96e1453 100644
--- a/reco/littrack/std/finder/CbmLitNearestHitTofMerger.cxx
+++ b/reco/littrack/std/finder/CbmLitNearestHitTofMerger.cxx
@@ -75,11 +75,16 @@ LitStatus CbmLitNearestHitTofMerger::DoMerge(HitPtrVector& hits, TrackPtrVector&
       if (zParamMap.find(hit->GetZ()) == zParamMap.end()) {  // This should never happen
         std::cout << "-E- CbmLitNearestHitTofMerger::DoMerge: Z position " << hit->GetZ()
                   << " not found in map. Something is wrong.\n";
+        assert(0);
       }
       CbmLitTrackParam tpar(zParamMap[hit->GetZ()]);
-      litfloat chi = 0.;
+      litfloat chi = 1.e10;
       fFilter->Update(&tpar, hit, chi);
-      if (chi < fChiSqCut && chi < minChiSq) {  // Check if hit is inside validation gate and closer to the track.
+
+      // Check if hit is inside validation gate.
+      if (fChiSqCut >= 0. && chi >= fChiSqCut) { continue; }
+
+      if (chi < minChiSq) {  // Check if hit is closer to the track.
         minChiSq = chi;
         minHit   = hit;
         minPar   = tpar;