diff --git a/src/Scandalizer.cxx b/src/Scandalizer.cxx
index 6d10a1d8908135752ba2bf958fdeaeb36ce16e6a..d19dd6f0d8f101ab6a4332c1484a8b992ee880eb 100644
--- a/src/Scandalizer.cxx
+++ b/src/Scandalizer.cxx
@@ -1,4 +1,5 @@
 #include "Scandalizer.h"
+#include "THaRun.h"
 
 using namespace std;
 
@@ -18,6 +19,18 @@ Int_t Scandalizer::ReadOneEvent()
 
   // Find next event buffer in CODA file. Quit if error.
   Int_t status = THaRunBase::READ_OK;
+
+  while(_skip_events > 0  ) {
+    std::cout << _skip_events << " skipping\n";
+    int skipped = 0;
+    auto run =  dynamic_cast<THaRun*>(fRun);
+    if( run ) {
+      skipped = run->SkipToEndOfFile(_skip_events);
+    }
+    _skip_events = 0;
+    std::cout << skipped << " skipped\n";
+    continue;
+  }
   if (to_read_file)
     status = fRun->ReadEvent();
 
@@ -190,10 +203,6 @@ Int_t Scandalizer::Process( THaRunBase* run )
       fOutput->GetTree()->AutoSave("SaveSelf");
     }
 
-    if(_skip_events > 0 ) {
-      _skip_events--;
-      continue;
-    }
 
 
     //--- Update run parameters with current event