diff --git a/src/OutputFile.cc b/src/OutputFile.cc
index 0136227a22640f2391cacc02effe9e3cb52bbadf..4f683d858cf3d3cf6c13150fdcac5b8f0ace0136 100644
--- a/src/OutputFile.cc
+++ b/src/OutputFile.cc
@@ -31,10 +31,6 @@ void Detail::LumisectionMetadata::AddFileMetadata(FileMetadata&& fmd) {
   num_files++;
 }
 
-bool Detail::LumisectionMetadata::IsLastIndex(int index) const {
-  return index == static_cast<int>(max_index);
-}
-
 std::string Detail::LumisectionMetadata::MakeFooter(uint32_t run_number) const {
   std::stringstream footer;
   footer << "{\n  \"data\":[\"";
diff --git a/src/OutputFile.h b/src/OutputFile.h
index db4c13b355c14b88b5ab69b04ce37f57bf974be5..143bba3458f6587f266928cf8769f5814d8a0cff 100644
--- a/src/OutputFile.h
+++ b/src/OutputFile.h
@@ -52,15 +52,17 @@ struct LumisectionMetadata {
       : max_index(max_index_per_ls) {}
 
   void UpdateIndex(uint32_t global_index) {
-    std::cout << "Lumisection = " << lumisection << ", index = " << index_in_lumisection
-              << std::endl;
-    std::cout << "New LS = " << (global_index / (max_index + 1) + 1) << ", global index = " << global_index << std::endl;
-    assert(lumisection == 0 || lumisection == (global_index / (max_index + 1) + 1));
-    lumisection = global_index / (max_index + 1) + 1;
-    index_in_lumisection = global_index % (max_index + 1);
+    auto new_ls = (global_index / (max_index + 1) + 1);
+    auto new_idx = global_index % (max_index + 1);
+    LOG(TRACE) << "Lumisection = " << lumisection << "  ==>  " << new_ls;
+    LOG(TRACE) << "Index in LS = " << index_in_lumisection << "  ==>  " << new_idx;
+    // Lumisection should only ever change after structure has been reset
+    assert(lumisection == 0 || lumisection == new_ls);
+    lumisection = new_ls;
+    index_in_lumisection = new_idx;
   }
 
-  bool IsLastIndex(int index) const;
+  auto IsLastIndex() const { return index_in_lumisection == max_index; }
   void AddFileMetadata(FileMetadata&& fmd);
   std::string MakeFooter(uint32_t run_number) const;
 };
diff --git a/src/OutputFileHandler.cc b/src/OutputFileHandler.cc
index b046bd4ad68ae57677ee1094ff86175527869a87..afe0abafded15e75cf3152bf8d611be4bbdfd297 100644
--- a/src/OutputFileHandler.cc
+++ b/src/OutputFileHandler.cc
@@ -40,7 +40,7 @@ void OutputFileHandler::UpdateRunInfo(uint32_t run, uint32_t index) {
 
 void OutputFileHandler::CommitFile(uint32_t run, uint32_t index) {
   ls_->AddFileMetadata(outputFile_.GetMetadata());
-  if (ls_->IsLastIndex(current_index_) && IsMainPipeline() && HasCmsswHeaders()) {
+  if (ls_->IsLastIndex() && IsMainPipeline() && HasCmsswHeaders()) {
     // If last in lumisection and using CMSSW header and is the main pipeline
     LOG(TRACE) << "Last file in lumisection; handing over LS metadata footer";
     outputFile_.SetLumisectionFooter(std::move(ls_));