diff --git a/LArCalorimeter/LArROD/src/LArRawChannelBuilderSCAlg.cxx b/LArCalorimeter/LArROD/src/LArRawChannelBuilderSCAlg.cxx
index a3d6643e16be96b9deec3e47db4551cc41381457..4f48dc208d60aba5558f5e5ce6b13f8d79e84434 100644
--- a/LArCalorimeter/LArROD/src/LArRawChannelBuilderSCAlg.cxx
+++ b/LArCalorimeter/LArROD/src/LArRawChannelBuilderSCAlg.cxx
@@ -236,8 +236,6 @@ StatusCode LArRawChannelBuilderSCAlg::execute(const EventContext& ctx) const {
     
     const CaloDetDescrElement* dde = caloMgr->get_element (offId);
     ss->setCaloDDE(dde);
-    ss->setEnergy(E);
-    ss->setTime(tau);
     ss->setGain((CaloGain::CaloGain)0);
     float et = ss->et()*1e-3; // et in GeV
     // for super-cells provenance and time are slightly different
@@ -245,12 +243,21 @@ StatusCode LArRawChannelBuilderSCAlg::execute(const EventContext& ctx) const {
     if(et>10e3 && tau>-8 && tau<16) prov |= LArProv::SCTIMEPASS; //0x200;
     else if(et<=10e3 && std::fabs(tau)<8) prov |= LArProv::SCTIMEPASS; //0x200; 
     if ( passBCIDmax ) prov |= LArProv::SCPASSBCIDMAX; //0x40;
+
     // set some provenance to indicate bad channel
     if(badchannel) {
        LArBadChannel bc = badchannel->offlineStatus(offId);
        if ( !bc.good() && bc.statusBad(LArBadChannel::LArBadChannelSCEnum::maskedOSUMBit) ){
          prov |= 0x80;
+         ss->setEnergy(0.);
+         ss->setTime(0.);
+       } else {
+         ss->setEnergy(E);
+         ss->setTime(tau);
        }
+    } else {
+      ss->setEnergy(E);
+      ss->setTime(tau);
     }
 
     ss->setProvenance(prov);