diff --git a/TileCalorimeter/TileRecUtils/TileRecUtils/TileTimeBCOffsetFilter.h b/TileCalorimeter/TileRecUtils/TileRecUtils/TileTimeBCOffsetFilter.h
index 2b0c8342aca292c4a5330fee0c024bf77958401a..c1aa0d64e3619bfb9bea17f7b96890b14a48022e 100644
--- a/TileCalorimeter/TileRecUtils/TileRecUtils/TileTimeBCOffsetFilter.h
+++ b/TileCalorimeter/TileRecUtils/TileRecUtils/TileTimeBCOffsetFilter.h
@@ -95,7 +95,11 @@ class TileTimeBCOffsetFilter: public extends<AthAlgTool, ITileRawChannelTool> {
     float m_ene_threshold_3chan;
     float m_ene_threshold_1chan;
     float m_time_threshold_diff;
+    float m_time_threshold_ref_ch;
+    float m_ene_threshold_ref_ch;
+    
     bool m_checkDCS;
 
 };
 #endif
+
diff --git a/TileCalorimeter/TileRecUtils/python/TileRawChannelCorrectionConfig.py b/TileCalorimeter/TileRecUtils/python/TileRawChannelCorrectionConfig.py
index 55cfd98db1d4c549226e1ae5f53dea0c12d9ef25..61329b4100e9e02cd6367c97e00962d8bd6a2f78 100644
--- a/TileCalorimeter/TileRecUtils/python/TileRawChannelCorrectionConfig.py
+++ b/TileCalorimeter/TileRecUtils/python/TileRawChannelCorrectionConfig.py
@@ -101,9 +101,11 @@ def TileTimeBCOffsetFilterCfg(flags, **kwargs):
 
     acc = ComponentAccumulator()
     kwargs.setdefault('CheckDCS', flags.Tile.useDCS)
-    kwargs.setdefault('EneThreshold3', 3000)
-    kwargs.setdefault('EneThreshold1', 4000)
+    kwargs.setdefault('EneThreshold3', 1000)
+    kwargs.setdefault('EneThreshold1', 3000)
     kwargs.setdefault('TimeThreshold', 15)
+    kwargs.setdefault('RefEneThreshold', 500)
+    kwargs.setdefault('RefTimeThreshold', 10)
 
     from TileRecUtils.TileDQstatusConfig import TileDQstatusAlgCfg
     acc.merge( TileDQstatusAlgCfg(flags) )
diff --git a/TileCalorimeter/TileRecUtils/src/TileTimeBCOffsetFilter.cxx b/TileCalorimeter/TileRecUtils/src/TileTimeBCOffsetFilter.cxx
index 46f5d56972c9815f128c21e2f39401fd4a7596e5..65e9c84b3b1a101d9b96171cd65e23d2ed56b011 100644
--- a/TileCalorimeter/TileRecUtils/src/TileTimeBCOffsetFilter.cxx
+++ b/TileCalorimeter/TileRecUtils/src/TileTimeBCOffsetFilter.cxx
@@ -26,6 +26,7 @@
 #include "TileEvent/TileRawChannelContainer.h"
 #include "TileIdentifier/TileRawChannelUnit.h"
 #include "TileCalibBlobObjs/TileCalibUtils.h"
+#include "TileRecUtils/TileRawChannelBuilder.h"
 
 // Atlas includes
 #include "AthenaKernel/errorcheck.h"
@@ -41,9 +42,11 @@ TileTimeBCOffsetFilter::TileTimeBCOffsetFilter(const std::string& type,
     , m_tileHWID(nullptr)
     , m_cabling(nullptr)
 {
-  declareProperty("EneThreshold3", m_ene_threshold_3chan = 3000);
-  declareProperty("EneThreshold1", m_ene_threshold_1chan = 4000);
+  declareProperty("EneThreshold3", m_ene_threshold_3chan = 1000);
+  declareProperty("EneThreshold1", m_ene_threshold_1chan = 3000);
   declareProperty("TimeThreshold", m_time_threshold_diff = 15);
+  declareProperty("RefEneThreshold", m_ene_threshold_ref_ch = 500);
+  declareProperty("RefTimeThreshold", m_time_threshold_ref_ch = 10);
 
   declareProperty("CheckDCS", m_checkDCS = false);
 }
@@ -58,6 +61,10 @@ StatusCode TileTimeBCOffsetFilter::initialize() {
                       << m_ene_threshold_1chan << endmsg;
       msg(MSG::DEBUG) << "TimeThreshold = " 
                       << m_time_threshold_diff << endmsg;
+      msg(MSG::DEBUG) << "RefEneThreshold = "
+                      << m_ene_threshold_ref_ch << endmsg;
+      msg(MSG::DEBUG) << "RefTimeThreshold = "
+                      << m_time_threshold_ref_ch << endmsg;
       msg(MSG::DEBUG) << "CheckDCS = " 
                       << ((m_checkDCS)?"true":"false") << endmsg;
   }
@@ -234,6 +241,7 @@ TileTimeBCOffsetFilter::process (TileMutableRawChannelContainer& rchCont) const
       for(int i=0; i <= nchan_dmu; ++i) {
         ene_above = ene_above || ((ch_number[i] >= 0) && (ch_amp[i] > ene_threshold));
       }
+      ene_above = ene_above && (ch_amp[0] > m_ene_threshold_ref_ch);  // reference energy above threshold
       if (ene_above) { // at least 1 channel above the threshold
         ATH_MSG_VERBOSE( "Energy above threshold");
         /* first check whether the times of 1-3 channels on the DMU are within
@@ -255,7 +263,8 @@ TileTimeBCOffsetFilter::process (TileMutableRawChannelContainer& rchCont) const
         if (time_dmu_same) {
           time_dmu_aver /= n_dmu_aver;
           ATH_MSG_VERBOSE( "Average time "<< time_dmu_aver);
-          if (fabs(ch_time[0]-time_dmu_aver) > m_time_threshold_diff) {
+          if ((fabs(ch_time[0]-time_dmu_aver) > m_time_threshold_diff)    // reference time far from average DMU time
+                      && (fabs(ch_time[0]) < m_time_threshold_ref_ch)) {  // reference time ~0 ns
             for(int i=1; i <= nchan_dmu; ++i) {
               if (ch_number[i] >= 0) ch_mask[i] = true;
             }
@@ -373,4 +382,4 @@ int TileTimeBCOffsetFilter::find_partner(int ros, int ch) const {
     return lbcells[ch];
   else         // EB
     return ebcells[ch];
-}
+}
\ No newline at end of file