diff --git a/Event/FaserByteStreamCnvSvc/src/FaserByteStreamInputSvc.cxx b/Event/FaserByteStreamCnvSvc/src/FaserByteStreamInputSvc.cxx
index e2d659995a21c00f125e8dfb32a779fe202a27c6..d24a2f65b5accb31762148887a8e0445041ecaea 100644
--- a/Event/FaserByteStreamCnvSvc/src/FaserByteStreamInputSvc.cxx
+++ b/Event/FaserByteStreamCnvSvc/src/FaserByteStreamInputSvc.cxx
@@ -9,7 +9,7 @@
 //#include "ByteStreamData/ByteStreamMetadataContainer.h"
 #include "FaserByteStreamCnvSvcBase/FaserByteStreamAddress.h"
 #include "FaserEventStorage/pickFaserDataReader.h"
-
+#include "FaserEventStorage/EventStorageIssues.h"
 #include "Gaudi/Property.h"
 
 #include "PersistentDataModel/DataHeader.h"
@@ -116,10 +116,22 @@ const EventFull* FaserByteStreamInputSvc::nextEvent() {
 
     if (m_evtInFile+1 > m_evtOffsets.size()) { 
       // get current event position (cast to long long until native tdaq implementation)
+      // This is the usual situation, reading past previous point in file
       ATH_MSG_DEBUG("nextEvent _above_ high water mark");
       m_evtFileOffset = (long long)m_reader->getPosition();
       m_evtOffsets.push_back(m_evtFileOffset);
-      m_reader->getData(theEvent);
+
+      // Catch truncated events
+      try {
+	m_reader->getData(theEvent);
+      } catch (const FaserEventStorage::ES_OutOfFileBoundary& e) {
+	// Attempt to read beyond end of file, likely truncated event
+	ATH_MSG_WARNING("DataReader reports FaserEventStorage::ES_OutOfFileBoundary, stop reading file!");
+	return NULL;
+      } catch (...) {
+	// rethrow any other exceptions
+	throw;
+      }
     }
 
     else {