diff --git a/src/OutputByOrbit.cc b/src/OutputByOrbit.cc
index 9db8618ec149fb92c4ed58fa5aeddd08c2be6fe8..581a94a70080dae8d928e0bfcd9ccbab10d82c38 100644
--- a/src/OutputByOrbit.cc
+++ b/src/OutputByOrbit.cc
@@ -12,14 +12,16 @@
 #include "tools.h"
 
 void OutputByOrbitStream::MonitorEndOfRun() {
-  int latest_EoR = -1;
+  int latest_EoR = 0;
   while (true) {
-    int current_run_number = output_file_handler_.GetCurrentRunNumber();
+    //    int current_run_number = output_file_handler_.GetCurrentRunNumber();
+    int current_run_number = control_.run_number;
     if (!control_.running && latest_EoR != current_run_number) {
       // An unhandled run just stopped; wait N seconds in case the pipeline is still processing
       // Write EoR file for the most recent run
       if (output_file_handler_.isMainPipeline()) {
         output_file_handler_.write_EoR_file();
+        output_file_handler_.setCurrentRunNumber(control_.run_number);
       }
       // Update local EoR tag
       latest_EoR = current_run_number;
diff --git a/src/OutputFileHandler.cc b/src/OutputFileHandler.cc
index fdc95dacb05e756e3606b8f12b10c74e6ad9f9bf..25fd465e3ea85f82e0f6b6936fa10fe7da4e3315 100644
--- a/src/OutputFileHandler.cc
+++ b/src/OutputFileHandler.cc
@@ -250,6 +250,7 @@ void OutputFileHandler::write_EoR_file() {
   EoR_file.close();
   run_NOrbits_ = 0;
   run_NFiles_ = 0;
+  current_index_ = 0;
 }
 
 void OutputFileHandler::check_if_all_raw_written() {
diff --git a/src/OutputFileHandler.h b/src/OutputFileHandler.h
index 14043011fc58235cdb2eb8da570458dcd59de15e..1929cc23984adbeeb4c993409d7a3614b4fc737c 100644
--- a/src/OutputFileHandler.h
+++ b/src/OutputFileHandler.h
@@ -95,6 +95,26 @@ class OutputFileHandler {
     int nOrbitsPerFile_;
   };
 
+ public:
+  size_t getLumisectionFileSize() { return ls_file_size_; }
+  uint32_t getLumisectionNOrbits() { return ls_NOrbits_; }
+  uint32_t getLumisectionNFiles() { return ls_NFiles_; }
+  uint32_t getRunNOrbits() { return run_NOrbits_; }
+
+  void updateLumisectionFileSize(size_t file_size) { ls_file_size_ += file_size; }
+  void updateLumisectionNOrbits(uint32_t NOrbits) { ls_NOrbits_ += NOrbits; }
+  void updateLumisectionNFiles(uint32_t NFiles) { ls_NFiles_ += NFiles; }
+  void updateRunNOrbits(uint32_t NOrbits) { run_NOrbits_ += NOrbits; }
+  void updateRunNFiles(uint32_t NFiles) { run_NFiles_ += NFiles; }
+
+  void setLumisectionFileSize(size_t file_size) { ls_file_size_ = file_size; }
+  void setLumisectionNOrbits(uint32_t NOrbits) { ls_NOrbits_ = NOrbits; }
+  void setLumisectionNFiles(uint32_t NFiles) { ls_NFiles_ = NFiles; }
+  void setRunNOrbits(uint32_t NOrbits) { run_NOrbits_ = NOrbits; }
+  void setRunNFiles(uint32_t NFiles) { run_NFiles_ = NFiles; }
+
+  void setCurrentRunNumber(int n) { current_run_number_ = n; }
+
  private:
   void create_output_directory_maybe(std::string &output_directory);
 
@@ -121,23 +141,6 @@ class OutputFileHandler {
 
   static std::atomic<bool> file_handler_running_;
 
-  size_t getLumisectionFileSize() { return ls_file_size_; }
-  uint32_t getLumisectionNOrbits() { return ls_NOrbits_; }
-  uint32_t getLumisectionNFiles() { return ls_NFiles_; }
-  uint32_t getRunNOrbits() { return run_NOrbits_; }
-
-  void updateLumisectionFileSize(size_t file_size) { ls_file_size_ += file_size; }
-  void updateLumisectionNOrbits(uint32_t NOrbits) { ls_NOrbits_ += NOrbits; }
-  void updateLumisectionNFiles(uint32_t NFiles) { ls_NFiles_ += NFiles; }
-  void updateRunNOrbits(uint32_t NOrbits) { run_NOrbits_ += NOrbits; }
-  void updateRunNFiles(uint32_t NFiles) { run_NFiles_ += NFiles; }
-
-  void setLumisectionFileSize(size_t file_size) { ls_file_size_ = file_size; }
-  void setLumisectionNOrbits(uint32_t NOrbits) { ls_NOrbits_ = NOrbits; }
-  void setLumisectionNFiles(uint32_t NFiles) { ls_NFiles_ = NFiles; }
-  void setRunNOrbits(uint32_t NOrbits) { run_NOrbits_ = NOrbits; }
-  void setRunNFiles(uint32_t NFiles) { run_NFiles_ = NFiles; }
-
   std::string base_path_;
   std::string run_dir_;
   std::string filename_prefix_;
@@ -154,7 +157,7 @@ class OutputFileHandler {
   int numPipelines_;
   std::thread t;
   const uint32_t max_index_per_ls_;
-  size_t ls_file_size_;
+  size_t ls_file_size_{};
   size_t file_size_{};
   uint32_t NOrbits_{};
   uint32_t ls_NOrbits_{};