diff --git a/MuonSpectrometer/MuonConditions/MuonCondGeneral/MuonCondAlg/MuonCondAlg/MdtCondDbAlg.h b/MuonSpectrometer/MuonConditions/MuonCondGeneral/MuonCondAlg/MuonCondAlg/MdtCondDbAlg.h
index 38f7c4948ec13b9b7e94c75b990283bf1284a712..acee61209c6fa442ebcda96b7866b1593a235e58 100644
--- a/MuonSpectrometer/MuonConditions/MuonCondGeneral/MuonCondAlg/MuonCondAlg/MdtCondDbAlg.h
+++ b/MuonSpectrometer/MuonConditions/MuonCondGeneral/MuonCondAlg/MuonCondAlg/MdtCondDbAlg.h
@@ -44,8 +44,7 @@ private:
     StatusCode loadDataPsLv           (writeHandle_t& wh, MdtCondDbData* dataOut, const EventContext& ctx) const;
     StatusCode loadDataHv             (writeHandle_t& wh, MdtCondDbData* dataOut, const EventContext& ctx) const;
     StatusCode loadDataLv             (writeHandle_t& wh, MdtCondDbData* dataOut, const EventContext& ctx) const;
-    StatusCode loadDataDroppedChambers(writeHandle_t& wh, MdtCondDbData* dataOut, const EventContext& ctx) const;
-    StatusCode loadMcDroppedChambers  (writeHandle_t& wh, MdtCondDbData* dataOut, const EventContext& ctx) const;
+    StatusCode loadDroppedChambers    (writeHandle_t& wh, MdtCondDbData* dataOut, const EventContext& ctx, bool isMC) const;
     StatusCode loadMcDeadElements     (writeHandle_t& wh, MdtCondDbData* dataOut, const EventContext& ctx) const;
     StatusCode loadMcDeadTubes        (writeHandle_t& wh, MdtCondDbData* dataOut, const EventContext& ctx) const;
     StatusCode loadMcNoisyChannels    (writeHandle_t& wh, MdtCondDbData* dataOut, const EventContext& ctx) const;
diff --git a/MuonSpectrometer/MuonConditions/MuonCondGeneral/MuonCondAlg/src/MdtCondDbAlg.cxx b/MuonSpectrometer/MuonConditions/MuonCondGeneral/MuonCondAlg/src/MdtCondDbAlg.cxx
index e65a94e14bd245d9a3436ae12ba59326fcd1159f..a0c0e468ebc8b629464615e8af7d8cbedd3c8fcf 100644
--- a/MuonSpectrometer/MuonConditions/MuonCondGeneral/MuonCondAlg/src/MdtCondDbAlg.cxx
+++ b/MuonSpectrometer/MuonConditions/MuonCondGeneral/MuonCondAlg/src/MdtCondDbAlg.cxx
@@ -75,14 +75,14 @@ MdtCondDbAlg::execute(const EventContext& ctx) const {
     if(m_isData && m_isRun1) {
       ATH_CHECK(loadDataPsHv(writeHandle, writeCdo.get(),ctx));
       ATH_CHECK(loadDataPsLv(writeHandle, writeCdo.get(),ctx));
-      ATH_CHECK(loadDataDroppedChambers(writeHandle, writeCdo.get(),ctx));
+      ATH_CHECK(loadDroppedChambers(writeHandle, writeCdo.get(),ctx,false));
     }
     else if(m_isData && !m_isRun1) {
       ATH_CHECK(loadDataHv(writeHandle, writeCdo.get(),ctx));
       ATH_CHECK(loadDataLv(writeHandle, writeCdo.get(),ctx));
     }
     else {
-      ATH_CHECK(loadMcDroppedChambers(writeHandle, writeCdo.get(),ctx));
+      ATH_CHECK(loadDroppedChambers(writeHandle, writeCdo.get(),ctx,true));
       ATH_CHECK(loadMcNoisyChannels(writeHandle, writeCdo.get(),ctx));
 		//ATH_CHECK(loadMcDeadElements     (rangeW, writeCdo.get(),ctx));// keep for future development 
 		//ATH_CEHCK(loadMcDeadTubes        (rangeW, writeCdo.get(),ctx));// keep for future development
@@ -471,9 +471,11 @@ MdtCondDbAlg::loadDataLv(writeHandle_t& wh, MdtCondDbData* writeCdo, const Event
 
 //loadDataDroppedChambers
 StatusCode 
-MdtCondDbAlg::loadDataDroppedChambers(writeHandle_t& wh, MdtCondDbData* writeCdo, const EventContext& ctx) const {
+MdtCondDbAlg::loadDroppedChambers(writeHandle_t& wh, MdtCondDbData* writeCdo, const EventContext& ctx, bool isMC) const {
 
-  SG::ReadCondHandle<CondAttrListCollection> readHandle{m_readKey_folder_da_droppedChambers,ctx};
+  SG::ReadCondHandle<CondAttrListCollection> readHandle{ (isMC ? m_readKey_folder_mc_droppedChambers : 
+                                                                  m_readKey_folder_da_droppedChambers),
+                                                                  ctx};
     const CondAttrListCollection* readCdo{*readHandle}; 
     if(readCdo==0){
       ATH_MSG_ERROR("Null pointer to the read conditions object");
@@ -504,37 +506,6 @@ MdtCondDbAlg::loadDataDroppedChambers(writeHandle_t& wh, MdtCondDbData* writeCdo
 }
 
 
-
-// loadMcDroppedChambers
-StatusCode
-MdtCondDbAlg::loadMcDroppedChambers(writeHandle_t& wh, MdtCondDbData* writeCdo, const EventContext& ctx) const {
-
-  SG::ReadCondHandle<CondAttrListCollection> readHandle{m_readKey_folder_mc_droppedChambers,ctx};
-    const CondAttrListCollection* readCdo{*readHandle}; 
-    if(readCdo==0){
-      ATH_MSG_ERROR("Null pointer to the read conditions object");
-      return StatusCode::FAILURE; 
-    } 
-    wh.addDependency(readHandle);
-    ATH_MSG_DEBUG("Size of CondAttrListCollection " << readHandle.fullKey() << " readCdo->size()= " << readCdo->size());
-    ATH_MSG_DEBUG("Range of input is " << readHandle.getRange()  << ", range of output is " << wh.getRange());
-
-    CondAttrListCollection::const_iterator itr;
-    for(itr = readCdo->begin(); itr != readCdo->end(); ++itr) {
-
-        const coral::AttributeList& atr = itr->second;
-        std::string chamber_name;
-        chamber_name = *(static_cast<const std::string*>((atr["Chambers_disabled"]).addressOfData()));
-    
-        Identifier ChamberId = m_condMapTool->ConvertToOffline(chamber_name);
-        writeCdo->setDeadChamber(ChamberId);
-    }
-
-    return StatusCode::SUCCESS;
-}
-
-
-
 // loadMcDeadElements
 StatusCode
 MdtCondDbAlg::loadMcDeadElements(writeHandle_t& wh, MdtCondDbData* writeCdo, const EventContext& ctx) const {
@@ -674,47 +645,29 @@ MdtCondDbAlg::loadMcNoisyChannels(writeHandle_t& wh, MdtCondDbData* writeCdo, co
     ATH_MSG_DEBUG("Size of CondAttrListCollection " << readHandle.fullKey() << " readCdo->size()= " << readCdo->size());
     ATH_MSG_DEBUG("Range of input is " << readHandle.getRange() << ", range of output is " << wh.getRange() );
 
-    CondAttrListCollection::const_iterator itr;
-    unsigned int chan_index=0; 
-    for(itr = readCdo->begin(); itr != readCdo->end(); ++itr) {
+    for(const auto& itr: *readCdo) {
 
-        unsigned int chanNum   = readCdo->chanNum (chan_index);
-        std::string hv_payload = readCdo->chanName(chanNum   );
+        unsigned int chanNum = itr.first;
         std::string hv_name;
-        itr = readCdo->chanAttrListPair(chanNum);
-        const coral::AttributeList& atr = itr->second;
+        std::string hv_payload = readCdo->chanName(chanNum);
 
-        if(atr.size()==1) {
+        const coral::AttributeList& atr = itr.second;
+        
+        if(atr.size()){
             hv_name = *(static_cast<const std::string*>((atr["fsm_currentState"]).addressOfData()));
             std::string delimiter = " ";
             std::vector<std::string> tokens;
             MuonCalib::MdtStringUtils::tokenize(hv_name, tokens, delimiter);
-     
-            std::string thename; 
             std::string delimiter2 = "_";
             std::vector<std::string> tokens2;
-            MuonCalib::MdtStringUtils::tokenize(hv_payload, tokens2, delimiter2);
-
-            if(tokens[0]!="ON" && tokens[0]!="STANDBY" && tokens[0]!="UNKNOWN"){
-                int multilayer = atoi(const_cast<char*>(tokens2[3].c_str()));
-                std::string chamber_name = tokens2[2];
-                Identifier ChamberId     = m_condMapTool->ConvertToOffline(chamber_name);
-                Identifier MultiLayerId  = m_idHelperSvc->mdtIdHelper().channelID(ChamberId,multilayer,1,1);
-                thename = chamber_name+"_multilayer"+tokens2[3];
-                writeCdo->setDeadMultilayer(thename, MultiLayerId);
-                writeCdo->setDeadChamber   (ChamberId);
-            }
-            if(tokens[0]=="STANDBY"){
-                int multilayer = atoi(const_cast<char*>(tokens2[3].c_str()));
-                std::string chamber_name = tokens2[2];
-                Identifier ChamberId     = m_condMapTool->ConvertToOffline(chamber_name);
-                Identifier MultiLayerId  = m_idHelperSvc->mdtIdHelper().channelID(ChamberId,multilayer,1,1);
-                thename = chamber_name+"_multilayer"+tokens2[3];
-                writeCdo->setDeadMultilayer(thename, MultiLayerId);
-                writeCdo->setDeadChamber   (ChamberId);
+            MuonCalib::MdtStringUtils::tokenize(hv_payload,tokens2,delimiter2);
+      
+            if(tokens[0]!="ON"){
+                std::string chamber_name= tokens2[2];
+	              Identifier ChamberId = m_condMapTool->ConvertToOffline(chamber_name);
+                writeCdo->setDeadStation(chamber_name, ChamberId);
             }
         }
-        chan_index++;
     }
 	return StatusCode::SUCCESS;
 }
diff --git a/MuonSpectrometer/MuonConditions/MuonCondGeneral/MuonCondTool/src/MDT_MapConversion.cxx b/MuonSpectrometer/MuonConditions/MuonCondGeneral/MuonCondTool/src/MDT_MapConversion.cxx
index f7c2db3054337a33c995ce2773e4ec2a338b135c..6eeac945bc9d03c27b9228d3502d3bcd03d7043c 100644
--- a/MuonSpectrometer/MuonConditions/MuonCondGeneral/MuonCondTool/src/MDT_MapConversion.cxx
+++ b/MuonSpectrometer/MuonConditions/MuonCondGeneral/MuonCondTool/src/MDT_MapConversion.cxx
@@ -147,10 +147,16 @@ const Identifier& MDT_MapConversion::ConvertToOffline(const std::string &OnlineI
   //const Identifier m_Online_empty;
   
   if (m_Chamber_Map.size()!=0){
-    const Identifier & OfflineName = (m_Chamber_Map.find(OnlineId)->second);
+    const auto& mapit = m_Chamber_Map.find(OnlineId);
+    if (ATH_UNLIKELY(mapit == m_Chamber_Map.end())) { 
+      log << MSG::ERROR << "Lookup of ID " << OnlineId << " in MDT_MapConversion::ConvertToOffline failed" << endmsg; 
+      return m_Online_empty; // not quite right but should never get here
+    }
+    const Identifier & OfflineName = (mapit->second);
     return OfflineName;
+  } else { 
+    return m_Online_empty; 
   }
-  else return m_Online_empty;
   
   
 }