diff --git a/MQ/mcbm/CbmDeviceDigiEventSink.cxx b/MQ/mcbm/CbmDeviceDigiEventSink.cxx
index 9dcc0b4582a65569203a59119e5d41b0fffc7afb..7ba0c8533bfa3e6238a36a3199a95b56510de2f5 100644
--- a/MQ/mcbm/CbmDeviceDigiEventSink.cxx
+++ b/MQ/mcbm/CbmDeviceDigiEventSink.cxx
@@ -168,6 +168,7 @@ try {
     /// Comment to prevent clang format single lining
     if (kFALSE == InitHistograms()) { throw InitTaskError("Failed to initialize the histograms."); }
   }  // if( kTRUE == fbFillHistos )
+  fbInitDone = true;
 }
 catch (InitTaskError& e) {
   LOG(error) << e.what();
@@ -254,7 +255,10 @@ bool CbmDeviceDigiEventSink::HandleMissTsData(FairMQMessagePtr& msg, int /*index
   fvulMissedTsIndices.insert(fvulMissedTsIndices.end(), vIndices.begin(), vIndices.end());
 
   /// Check TS queue and process it if needed (in case it filled a hole!)
-  CheckTsQueues();
+  if (!fbBypassConsecutiveTs) {
+    /// But only if Consecutive TS check is not disabled explicitly by user
+    CheckTsQueues();
+  }
 
   return true;
 }
@@ -633,11 +637,13 @@ CbmDeviceDigiEventSink::~CbmDeviceDigiEventSink()
   /// FIXME: Add pointers check before delete
 
   /// Close things properly if not already done
-  if (!fbFinishDone) Finish();
+  if (fbInitDone && !fbFinishDone) Finish();
 
   /// Clear events vector
-  fEventsSel->clear();
-  delete fEventsSel;
+  if (fbInitDone) {
+    fEventsSel->clear();
+    delete fEventsSel;
+  }
 
   delete fpRun;
 }
@@ -800,6 +806,7 @@ std::vector<CbmDigiEvent> CbmEventTimeslice::GetSelectedData()
     if (uNbDigis) {
       auto startIt = fvDigiT0.begin() + event.GetIndex(ECbmDataType::kT0Digi, 0);
       auto stopIt  = fvDigiT0.begin() + event.GetIndex(ECbmDataType::kT0Digi, uNbDigis - 1);
+      ++stopIt;
       selEvent.fData.fT0.fDigis.assign(startIt, stopIt);
 
       /*
@@ -824,6 +831,7 @@ std::vector<CbmDigiEvent> CbmEventTimeslice::GetSelectedData()
     if (uNbDigis) {
       auto startIt = fvDigiSts.begin() + event.GetIndex(ECbmDataType::kStsDigi, 0);
       auto stopIt  = fvDigiSts.begin() + event.GetIndex(ECbmDataType::kStsDigi, uNbDigis - 1);
+      ++stopIt;
       selEvent.fData.fSts.fDigis.assign(startIt, stopIt);
 
       /*
@@ -848,6 +856,7 @@ std::vector<CbmDigiEvent> CbmEventTimeslice::GetSelectedData()
     if (uNbDigis) {
       auto startIt = fvDigiMuch.begin() + event.GetIndex(ECbmDataType::kMuchDigi, 0);
       auto stopIt  = fvDigiMuch.begin() + event.GetIndex(ECbmDataType::kMuchDigi, uNbDigis - 1);
+      ++stopIt;
       selEvent.fData.fMuch.fDigis.assign(startIt, stopIt);
 
       /*
@@ -872,6 +881,7 @@ std::vector<CbmDigiEvent> CbmEventTimeslice::GetSelectedData()
     if (uNbDigis) {
       auto startIt = fvDigiTrd.begin() + event.GetIndex(ECbmDataType::kTrdDigi, 0);
       auto stopIt  = fvDigiTrd.begin() + event.GetIndex(ECbmDataType::kTrdDigi, uNbDigis - 1);
+      ++stopIt;
       selEvent.fData.fTrd.fDigis.assign(startIt, stopIt);
 
       /*
@@ -898,6 +908,7 @@ std::vector<CbmDigiEvent> CbmEventTimeslice::GetSelectedData()
     if (uNbDigis) {
       auto startIt = fvDigiTof.begin() + event.GetIndex(ECbmDataType::kTofDigi, 0);
       auto stopIt  = fvDigiTof.begin() + event.GetIndex(ECbmDataType::kTofDigi, uNbDigis - 1);
+      ++stopIt;
       selEvent.fData.fTof.fDigis.assign(startIt, stopIt);
 
       /*
@@ -922,6 +933,7 @@ std::vector<CbmDigiEvent> CbmEventTimeslice::GetSelectedData()
     if (uNbDigis) {
       auto startIt = fvDigiRich.begin() + event.GetIndex(ECbmDataType::kRichDigi, 0);
       auto stopIt  = fvDigiRich.begin() + event.GetIndex(ECbmDataType::kRichDigi, uNbDigis - 1);
+      ++stopIt;
       selEvent.fData.fRich.fDigis.assign(startIt, stopIt);
 
       /*
@@ -946,6 +958,7 @@ std::vector<CbmDigiEvent> CbmEventTimeslice::GetSelectedData()
     if (uNbDigis) {
       auto startIt = fvDigiPsd.begin() + event.GetIndex(ECbmDataType::kPsdDigi, 0);
       auto stopIt  = fvDigiPsd.begin() + event.GetIndex(ECbmDataType::kPsdDigi, uNbDigis - 1);
+      ++stopIt;
       selEvent.fData.fPsd.fDigis.assign(startIt, stopIt);
 
       /*
diff --git a/MQ/mcbm/CbmDeviceDigiEventSink.h b/MQ/mcbm/CbmDeviceDigiEventSink.h
index da45d40b7c403e52a403bc16d28b3a0211862862..3d3ac06f1980effd7e1cf91f998c8effebede5d7 100644
--- a/MQ/mcbm/CbmDeviceDigiEventSink.h
+++ b/MQ/mcbm/CbmDeviceDigiEventSink.h
@@ -85,6 +85,7 @@ private:
   bool fbStoreFullTs         = false;  //! If true, store digis vectors with full TS in addition to selected events
   bool fbBypassConsecutiveTs = false;  //! Switch ON/OFF the bypass of the consecutive TS buffer before writing to file
   bool fbFillHistos          = false;  //! Switch ON/OFF filling of histograms
+  bool fbInitDone            = false;  //! Keep track of whether the Init was already fully completed
   bool fbFinishDone          = false;  //! Keep track of whether the Finish was already called
 
   /// User settings parameters