diff --git a/HLT/Trigger/TrigMonitoring/TrigOnlineMonitor/src/TrigL1TopoWriteValData.cxx b/HLT/Trigger/TrigMonitoring/TrigOnlineMonitor/src/TrigL1TopoWriteValData.cxx
index 9ede07dee712f186d0a93a5133bdf05305e99eff..2043c5ca710fa80b0764af8f1cbc2157c86afcd4 100644
--- a/HLT/Trigger/TrigMonitoring/TrigOnlineMonitor/src/TrigL1TopoWriteValData.cxx
+++ b/HLT/Trigger/TrigMonitoring/TrigOnlineMonitor/src/TrigL1TopoWriteValData.cxx
@@ -19,6 +19,9 @@ TrigL1TopoWriteValData::TrigL1TopoWriteValData(const std::string& name, ISvcLoca
   declareProperty("SimTopoCTPLocation",
                   m_simTopoCTPLocation = LVL1::DEFAULT_L1TopoCTPLocation,
                   "StoreGate key of simulated topo decision output for CTP, defaults to default output key of L1TopoSimulation");
+  declareProperty("SimTopoOverflowCTPLocation", 
+		  m_simTopoOverflowCTPLocation = LVL1::DEFAULT_L1TopoOverflowCTPLocation,
+		  "StoreGate key of simulated topo overflow output for CTP" );
   declareProperty("HLTResultName",
                   m_HltResultName = "HLTResult_HLT",
                   "StoreGate key of HLT result" );
@@ -28,6 +31,7 @@ StatusCode TrigL1TopoWriteValData::initialize(){
   ATH_MSG_INFO ("initialize");
   ATH_MSG_DEBUG ("Properties:" );
   ATH_MSG_DEBUG ("SimTopoCTPLocation : "<<m_simTopoCTPLocation );
+  ATH_MSG_DEBUG ("SimTopoOverflowCTPLocation : "<<m_simTopoOverflowCTPLocation );
   ATH_MSG_DEBUG ("HLTResultName : "<<m_HltResultName );
   return StatusCode::SUCCESS;
 }
@@ -54,7 +58,8 @@ StatusCode TrigL1TopoWriteValData::finalize() {
 //----------------------------------------------------------
 StatusCode TrigL1TopoWriteValData::doWriteValData(){
   ATH_MSG_DEBUG( "doWriteValData" );
-
+  
+  int num_words = 4;
   // Retrieve HLTResult
   DataHandle<HLT::HLTResult> hltResult; ///! HLTResult object
   if ( ! evtStore()->transientContains<HLT::HLTResult>(m_HltResultName.value()) ) {
@@ -79,13 +84,33 @@ StatusCode TrigL1TopoWriteValData::doWriteValData(){
     }
   }
 
+  // Retrieve L1Topo CTP simulated overflows if present
+  const DataHandle< LVL1::FrontPanelCTP > simTopoOverflowCTP; ///! simulated overflow output
+  if ( ! evtStore()->contains<LVL1::FrontPanelCTP>(m_simTopoOverflowCTPLocation.value()) ){
+    ATH_MSG_INFO("Could not find LVL1::FrontPanelCTP with key " << m_simTopoOverflowCTPLocation.value() << " in SG. No simulated overflow bits" );
+  } else {
+    CHECK_RECOVERABLE( evtStore()->retrieve(simTopoOverflowCTP,m_simTopoOverflowCTPLocation.value()) );
+    if (!simTopoOverflowCTP){
+      ATH_MSG_INFO( "Retrieve of LVL1::FrontPanelCTP sim overflows failed. No sim overflow data written to HLTResult" );
+    } else {
+      num_words = 8;
+    }
+  }
+
   // Write the L1Topo simulation data into the HLTResult
-  hltResult->getExtraData().anonymous.push_back( 4 );                         // number of words to be written
+  hltResult->getExtraData().anonymous.push_back( num_words );                         // number of words to be written
   hltResult->getExtraData().anonymous.push_back( simTopoCTP->cableWord1(0) ); // L1Topo simulation words
   hltResult->getExtraData().anonymous.push_back( simTopoCTP->cableWord1(1) );
   hltResult->getExtraData().anonymous.push_back( simTopoCTP->cableWord2(0) );
   hltResult->getExtraData().anonymous.push_back( simTopoCTP->cableWord2(1) );
 
+  if ( num_words == 8 ) {
+    hltResult->getExtraData().anonymous.push_back( simTopoOverflowCTP->cableWord1(0) );// L1Topo simulated overflow words
+    hltResult->getExtraData().anonymous.push_back( simTopoOverflowCTP->cableWord1(1) );
+    hltResult->getExtraData().anonymous.push_back( simTopoOverflowCTP->cableWord2(0) );
+    hltResult->getExtraData().anonymous.push_back( simTopoOverflowCTP->cableWord2(1) );
+  }
+
   return StatusCode::SUCCESS;
 }
 
diff --git a/HLT/Trigger/TrigMonitoring/TrigOnlineMonitor/src/TrigL1TopoWriteValData.h b/HLT/Trigger/TrigMonitoring/TrigOnlineMonitor/src/TrigL1TopoWriteValData.h
index 30205d44f82b29e3032f346c180e450cdc340fce..47ac1b9e90dc1352bd6a76d64a74623e35795237 100644
--- a/HLT/Trigger/TrigMonitoring/TrigOnlineMonitor/src/TrigL1TopoWriteValData.h
+++ b/HLT/Trigger/TrigMonitoring/TrigOnlineMonitor/src/TrigL1TopoWriteValData.h
@@ -29,6 +29,7 @@ class TrigL1TopoWriteValData:public AthAlgorithm {
  private:
   StatusCode doWriteValData();
   StringProperty m_simTopoCTPLocation;
+  StringProperty m_simTopoOverflowCTPLocation;
   StringProperty m_HltResultName;
 };