diff --git a/LumiBlock/LumiBlockComps/share/LuminosityCondAlg_test.ref b/LumiBlock/LumiBlockComps/share/LuminosityCondAlg_test.ref
index 7508f297f3fbb0407431dd3fe670103d80bc58f5..931600aeebe632be5cb8558b31cc9c39464ff067 100644
--- a/LumiBlock/LumiBlockComps/share/LuminosityCondAlg_test.ref
+++ b/LumiBlock/LumiBlockComps/share/LuminosityCondAlg_test.ref
@@ -1,8 +1,8 @@
 LumiBlockComps/LuminosityCondAlg_test
 
 
-Initializing Gaudi ApplicationMgr using job opts ../share/LuminosityCondAlg_test.txt
-JobOptionsSvc        INFO # =======> /home/sss/nobackup/atlas/build/../tests/../share/LuminosityCondAlg_test.txt
+Initializing Gaudi ApplicationMgr using job opts /afs/cern.ch/user/s/ssnyder/atlas-work3g/build-x86_64-centos7-gcc8-opt/x86_64-centos7-gcc8-opt/jobOptions/LumiBlockComps/LuminosityCondAlg_test.txt
+JobOptionsSvc        INFO # =======> /afs/cern.ch/user/s/ssnyder/atlas-work3g/build-x86_64-centos7-gcc8-opt/x86_64-centos7-gcc8-opt/jobOptions/LumiBlockComps/LuminosityCondAlg_test.txt
 JobOptionsSvc        INFO # (1,1): ApplicationMgr.ExtSvc = ["StoreGateSvc/ConditionStore"]
 JobOptionsSvc        INFO # (3,1): LuminosityCondAlg.LuminosityFolderInputKey = "testLumi"
 JobOptionsSvc        INFO # (4,1): LuminosityCondAlg.OnlineLumiCalibrationInputKey = "testCalib"
@@ -16,14 +16,17 @@ JobOptionsSvc        INFO # (12,1): LuminosityCondAlgRun1.LuminosityOutputKey =
 JobOptionsSvc        INFO # (14,1): LuminosityCondAlgMC.LuminosityFolderInputKey = ""
 JobOptionsSvc        INFO # (15,1): LuminosityCondAlgMC.OnlineLumiCalibrationInputKey = ""
 JobOptionsSvc        INFO # (16,1): LuminosityCondAlgMC.LuminosityOutputKey = "LuminosityCondDataMC"
-JobOptionsSvc        INFO Job options successfully read in from ../share/LuminosityCondAlg_test.txt
+JobOptionsSvc        INFO # (18,1): LuminosityCondAlgMiss.LuminosityFolderInputKey = "testLumiMiss"
+JobOptionsSvc        INFO # (19,1): LuminosityCondAlgMiss.OnlineLumiCalibrationInputKey = "testCalibMiss"
+JobOptionsSvc        INFO # (20,1): LuminosityCondAlgMiss.LuminosityOutputKey = "LuminosityCondDataMiss"
+JobOptionsSvc        INFO Job options successfully read in from /afs/cern.ch/user/s/ssnyder/atlas-work3g/build-x86_64-centos7-gcc8-opt/x86_64-centos7-gcc8-opt/jobOptions/LumiBlockComps/LuminosityCondAlg_test.txt
 ApplicationMgr    SUCCESS 
 ====================================================================================================================================
-                                                   Welcome to ApplicationMgr (GaudiCoreSvc v27r1p99)
-                                          running on karma on Wed May 22 16:49:43 2019
+                                                   Welcome to ApplicationMgr (GaudiCoreSvc v32r2)
+                                          running on lxplus750.cern.ch on Thu Oct 10 17:26:05 2019
 ====================================================================================================================================
 ApplicationMgr       INFO Application Manager Configured successfully
-ClassIDSvc           INFO  getRegistryEntries: read 2871 CLIDRegistry entries for module ALL
+ClassIDSvc           INFO  getRegistryEntries: read 2603 CLIDRegistry entries for module ALL
 EventLoopMgr      WARNING Unable to locate service "EventSelector" 
 EventLoopMgr      WARNING No events will be processed from external input.
 HistogramPersis...WARNING Histograms saving not required.
@@ -32,5 +35,7 @@ ApplicationMgr Ready
 test1
 ClassIDSvc           INFO  getRegistryEntries: read 372 CLIDRegistry entries for module ALL
 test2
-ClassIDSvc           INFO  getRegistryEntries: read 1932 CLIDRegistry entries for module ALL
+ClassIDSvc           INFO  getRegistryEntries: read 1997 CLIDRegistry entries for module ALL
 test3
+test4
+LuminosityCondA...WARNING LBAvInstLumi is zero or negative in updatePerBunchLumi():0
diff --git a/LumiBlock/LumiBlockComps/share/LuminosityCondAlg_test.txt b/LumiBlock/LumiBlockComps/share/LuminosityCondAlg_test.txt
index fc33742ab8ec148e5375f9a53b68e5e8de0f2a95..f0bf9ca251e376476f20196141c2b9f326f3201e 100644
--- a/LumiBlock/LumiBlockComps/share/LuminosityCondAlg_test.txt
+++ b/LumiBlock/LumiBlockComps/share/LuminosityCondAlg_test.txt
@@ -14,3 +14,7 @@ LuminosityCondAlgRun1.LuminosityOutputKey = "LuminosityCondDataRun1";
 LuminosityCondAlgMC.LuminosityFolderInputKey = "";
 LuminosityCondAlgMC.OnlineLumiCalibrationInputKey = "";
 LuminosityCondAlgMC.LuminosityOutputKey = "LuminosityCondDataMC";
+
+LuminosityCondAlgMiss.LuminosityFolderInputKey = "testLumiMiss";
+LuminosityCondAlgMiss.OnlineLumiCalibrationInputKey = "testCalibMiss";
+LuminosityCondAlgMiss.LuminosityOutputKey = "LuminosityCondDataMiss";
diff --git a/LumiBlock/LumiBlockComps/src/LuminosityCondAlg.cxx b/LumiBlock/LumiBlockComps/src/LuminosityCondAlg.cxx
index 25b6091a91f9ad4d3dac0dbef246948da5268121..a94516595239177a604b48d928c0decfe01a56a2 100644
--- a/LumiBlock/LumiBlockComps/src/LuminosityCondAlg.cxx
+++ b/LumiBlock/LumiBlockComps/src/LuminosityCondAlg.cxx
@@ -18,6 +18,16 @@
 #include <sstream>
 
 
+namespace {
+
+const EventIDBase::number_type UNDEFNUM = EventIDBase::UNDEFNUM;
+const EventIDBase::event_number_t UNDEFEVT = EventIDBase::UNDEFEVT;
+const EventIDRange fullrange (EventIDBase (0, UNDEFEVT, 0, 0, 0),
+                              EventIDBase (UNDEFNUM-1, UNDEFEVT, UNDEFNUM-1, 0, 0));
+
+} // anonymous namespace
+
+
 /**
  * @brief Gaudi initialize method.
  */
@@ -50,10 +60,6 @@ LuminosityCondAlg::execute (const EventContext& ctx) const
 
   if (m_luminosityFolderInputKey.empty()) {
     // MC case.
-    const EventIDBase::number_type UNDEFNUM = EventIDBase::UNDEFNUM;
-    const EventIDBase::event_number_t UNDEFEVT = EventIDBase::UNDEFEVT;
-    EventIDRange fullrange (EventIDBase (0, UNDEFEVT, UNDEFNUM, 0, 0),
-                            EventIDBase (UNDEFNUM-1, UNDEFEVT, UNDEFNUM, 0, 0));
     range = fullrange;
   }
   else {
@@ -231,6 +237,7 @@ LuminosityCondAlg::updatePerBunchLumi (const EventContext& ctx,
   if (lumi.lbAverageLuminosity() <= 0.) {
     ATH_MSG_WARNING( "LBAvInstLumi is zero or negative in updatePerBunchLumi():"
                      << lumi.lbAverageLuminosity());
+    range = EventIDRange::intersect (range, fullrange);
     return StatusCode::SUCCESS;
   }
 
diff --git a/LumiBlock/LumiBlockComps/test/LuminosityCondAlg_test.cxx b/LumiBlock/LumiBlockComps/test/LuminosityCondAlg_test.cxx
index dd4dbeb1f022b9edb93dc459bd3f92cf1ef2569b..5792bce82973365b4494f604bb9de7cf6a0311e3 100644
--- a/LumiBlock/LumiBlockComps/test/LuminosityCondAlg_test.cxx
+++ b/LumiBlock/LumiBlockComps/test/LuminosityCondAlg_test.cxx
@@ -58,6 +58,17 @@ EventIDBase timestamp (int t)
 }
 
 
+EventIDBase runlbn (int run,
+                    int lbn)
+{
+  return EventIDBase (run,  // run
+                      EventIDBase::UNDEFEVT,  // event
+                      EventIDBase::UNDEFNUM,  // timestamp
+                      0,                      // ns offset
+                      lbn);
+}
+
+
 void push_float (float x, std::vector<uint8_t>& data)
 {
   union {
@@ -98,7 +109,7 @@ coral::Blob makeBlob (float offs)
 }
 
 
-std::unique_ptr<CondAttrListCollection> make_run2_attrlist()
+std::unique_ptr<CondAttrListCollection> make_run2_attrlist (float instLumi = 1.5)
 {
   auto attrs = std::make_unique<CondAttrListCollection> (false);
   coral::AttributeList al;
@@ -108,7 +119,7 @@ std::unique_ptr<CondAttrListCollection> make_run2_attrlist()
   al.extend ("Valid", "unsigned int");
   al.extend ("AlgorithmID", "unsigned int");
   al.extend ("BunchInstLumi", "blob");
-  al["LBAvInstLumi"].setValue (1.5f);
+  al["LBAvInstLumi"].setValue (instLumi);
   al["LBAvEvtsPerBX"].setValue (10.5f);
   al["Valid"].setValue (0u);
   al["AlgorithmID"].setValue (42u);
@@ -217,7 +228,7 @@ void test1 (ISvcLocator* svcloc)
 
   EventContext ctx;
   ctx.setExtension (Atlas::ExtendedEventContext());
-  EventIDBase eid (0, 0, 0, 0);
+  EventIDBase eid (1, 0, 0, 0, 20);
   ctx.setEventID (eid);
 
   LuminosityCondAlg alg ("LuminosityCondAlg", svcloc);
@@ -228,7 +239,7 @@ void test1 (ISvcLocator* svcloc)
   
   DataObjID id1 ("testLumi");
   auto cc1 = std::make_unique<CondCont<CondAttrListCollection> > (rcu, id1);
-  const EventIDRange range1 (timestamp (0), timestamp (100));
+  const EventIDRange range1 (runlbn (1, 10), runlbn (1, 100));
   assert( cc1->insert (range1, make_run2_attrlist(), ctx).isSuccess() );
 
   DataObjID id2 ("testCalib");
@@ -247,8 +258,12 @@ void test1 (ISvcLocator* svcloc)
   const LuminosityCondData* data = 0;
   const EventIDRange* rangeout = nullptr;
   assert (ccout->find (eid, data, &rangeout));
-  assert (rangeout->start().time_stamp() == timestamp(0).time_stamp());
-  assert (rangeout->stop().time_stamp() == timestamp(90).time_stamp());
+  assert (rangeout->start().time_stamp() == 0);
+  assert (rangeout->start().run_number() == 1);
+  assert (rangeout->start().lumi_block() == 10);
+  assert (rangeout->stop().time_stamp() == 90);
+  assert (rangeout->stop().run_number() == 1);
+  assert (rangeout->stop().lumi_block() == 100);
 
   assert( data->lbAverageLuminosity() == 1.5 );
   assert( data->lbAverageInteractionsPerCrossing() == 10.5 );
@@ -275,7 +290,7 @@ void test2 (ISvcLocator* svcloc)
 
   EventContext ctx;
   ctx.setExtension (Atlas::ExtendedEventContext());
-  EventIDBase eid (0, 0, 0, 0);
+  EventIDBase eid (1, 0, 0, 0, 20);
   ctx.setEventID (eid);
 
   LuminosityCondAlg alg ("LuminosityCondAlgRun1", svcloc);
@@ -286,7 +301,7 @@ void test2 (ISvcLocator* svcloc)
   
   DataObjID id1 ("testLumiRun1");
   auto cc1 = std::make_unique<CondCont<CondAttrListCollection> > (rcu, id1);
-  const EventIDRange range1 (timestamp (0), timestamp (100));
+  const EventIDRange range1 (runlbn (1, 10), runlbn (1, 100));
   assert( cc1->insert (range1, make_run1_attrlist(), ctx).isSuccess() );
 
   DataObjID id2 ("testCalibRun1");
@@ -323,8 +338,12 @@ void test2 (ISvcLocator* svcloc)
   const LuminosityCondData* data = 0;
   const EventIDRange* rangeout = nullptr;
   assert (ccout->find (eid, data, &rangeout));
-  assert (rangeout->start().time_stamp() == timestamp(0).time_stamp());
-  assert (rangeout->stop().time_stamp() == timestamp(80).time_stamp());
+  assert (rangeout->start().time_stamp() == 0);
+  assert (rangeout->start().run_number() == 1);
+  assert (rangeout->start().lumi_block() == 10);
+  assert (rangeout->stop().time_stamp() == 80);
+  assert (rangeout->stop().run_number() == 1);
+  assert (rangeout->stop().lumi_block() == 100);
 
   assert( data->lbAverageLuminosity() == 1.5 );
   assert( data->lbAverageInteractionsPerCrossing() == 10.5 );
@@ -352,7 +371,7 @@ void test3 (ISvcLocator* svcloc)
 
   EventContext ctx;
   ctx.setExtension (Atlas::ExtendedEventContext());
-  EventIDBase eid (0, 0, 0, 0, 0, 0);
+  EventIDBase eid (1, 0, 0, 0, 20, 0);
   ctx.setEventID (eid);
 
   LuminosityCondAlg alg ("LuminosityCondAlgMC", svcloc);
@@ -382,6 +401,67 @@ void test3 (ISvcLocator* svcloc)
 }
 
 
+// Missing lumi
+void test4 (ISvcLocator* svcloc)
+{
+  std::cout << "test4\n";
+
+  EventContext ctx;
+  ctx.setExtension (Atlas::ExtendedEventContext());
+  EventIDBase eid (1, 0, 0, 0, 20);
+  ctx.setEventID (eid);
+
+  LuminosityCondAlg alg ("LuminosityCondAlgMiss", svcloc);
+  alg.addRef();
+  assert( alg.sysInitialize().isSuccess() );
+
+  Athena_test::DummyRCUSvc rcu;
+  
+  DataObjID id1 ("testLumiMiss");
+  auto cc1 = std::make_unique<CondCont<CondAttrListCollection> > (rcu, id1);
+  const EventIDRange range1 (runlbn (1, 10), runlbn (1, 100));
+  assert( cc1->insert (range1, make_run2_attrlist(0), ctx).isSuccess() );
+
+  DataObjID id2 ("testCalibMiss");
+  auto cc2 = std::make_unique<CondCont<OnlineLumiCalibrationCondData> > (rcu, id2);
+  const EventIDRange range2 (timestamp (0), timestamp (90));
+  assert( cc2->insert (range2, make_onlineLumiCalib(), ctx).isSuccess() );
+
+  ServiceHandle<StoreGateSvc> conditionStore ("ConditionStore", "test");
+  assert( conditionStore->record (std::move (cc1), "testLumiMiss") );
+  assert( conditionStore->record (std::move (cc2), "testCalibMiss") );
+
+  assert( alg.execute (ctx).isSuccess() );
+
+  CondCont<LuminosityCondData>* ccout = nullptr;
+  assert( conditionStore->retrieve (ccout, "LuminosityCondDataMiss").isSuccess() );
+  const LuminosityCondData* data = 0;
+  const EventIDRange* rangeout = nullptr;
+  assert (ccout->find (eid, data, &rangeout));
+  assert (rangeout->start().time_stamp() == 0);
+  assert (rangeout->start().run_number() == 1);
+  assert (rangeout->start().lumi_block() == 10);
+  assert (rangeout->stop().time_stamp() == EventIDBase::UNDEFNUM-1);
+  assert (rangeout->stop().run_number() == 1);
+  assert (rangeout->stop().lumi_block() == 100);
+ 
+  assert( data->lbAverageLuminosity() == 0 );
+  assert( data->lbAverageInteractionsPerCrossing() == 10.5 );
+  assert( data->lbAverageValid() == 0 );
+  assert( data->muToLumi() == 0 );
+
+  std::vector<float> vec = data->lbLuminosityPerBCIDVector();
+  assert (vec.size() == LuminosityCondData::TOTAL_LHC_BCIDS);
+  for (const auto& p : lumiData) {
+    assert (vec[p.first] == 0);
+  }
+
+  for (float f : vec) {
+    assert (f == 0);
+  }
+}
+
+
 int main()
 {
   std::cout << "LumiBlockComps/LuminosityCondAlg_test\n";
@@ -394,5 +474,6 @@ int main()
   test1 (svcloc);
   test2 (svcloc);
   test3 (svcloc);
+  test4 (svcloc);
   return 0;
 }
diff --git a/LumiBlock/LumiBlockComps/test/TrigLiveFractionCondAlg_test.cxx b/LumiBlock/LumiBlockComps/test/TrigLiveFractionCondAlg_test.cxx
index bba06e7c5c020fce53bdbb775b7a174d9657ca59..7452f3bedad6ee336ed781d077df0974d92988e0 100644
--- a/LumiBlock/LumiBlockComps/test/TrigLiveFractionCondAlg_test.cxx
+++ b/LumiBlock/LumiBlockComps/test/TrigLiveFractionCondAlg_test.cxx
@@ -57,6 +57,16 @@ EventIDBase timestamp (int t)
 }
 
 
+EventIDBase mixed (int run, int lbn, int t)
+{
+  return EventIDBase (run,  // run
+                      EventIDBase::UNDEFEVT,  // event
+                      t,
+                      0, // ns offset
+                      lbn);
+}
+
+
 template <class ITERATOR>
 coral::Blob make_busyblob (ITERATOR beg, ITERATOR end)
 {
@@ -157,7 +167,7 @@ void test1 (ISvcLocator* svcloc)
 
   EventContext ctx;
   ctx.setExtension (Atlas::ExtendedEventContext());
-  EventIDBase eid (0, 0, 0, 0);
+  EventIDBase eid (1, 0, 0, 0, 20);
   ctx.setEventID (eid);
 
   TrigLiveFractionCondAlg alg ("TrigLiveFractionCondAlg", svcloc);
@@ -173,7 +183,7 @@ void test1 (ISvcLocator* svcloc)
 
   DataObjID id2 ("testLumi");
   auto cc2 = std::make_unique<CondCont<LuminosityCondData> > (rcu, id2);
-  const EventIDRange range2 (timestamp (0), timestamp (90));
+  const EventIDRange range2 (mixed (1, 10, 0), mixed (1, 100, 90));
   float totW = 0;
   assert( cc2->insert (range2, make_lumi(totW), ctx).isSuccess() );
 
diff --git a/LumiBlock/LumiBlockData/LumiBlockData/LuminosityCondData.h b/LumiBlock/LumiBlockData/LumiBlockData/LuminosityCondData.h
index eacbd0cf83046c6829f44f4aca7d8ad8ebc4b353..b365fa69bf888363a3cba77aafea8a91d00168b4 100644
--- a/LumiBlock/LumiBlockData/LumiBlockData/LuminosityCondData.h
+++ b/LumiBlock/LumiBlockData/LumiBlockData/LuminosityCondData.h
@@ -65,7 +65,7 @@ private:
 
 
 CLASS_DEF (LuminosityCondData, 222148049, 0)
-CONDCONT_DEF (LuminosityCondData, 180584023);
+CONDCONT_MIXED_DEF (LuminosityCondData, 180584023);
 
 
 #endif // not LUMIBLOCKDATA_LUMINOSITYCONDDATA_H