Index: trunk/BNC/src/rinex/rnxobsfile.cpp
===================================================================
--- trunk/BNC/src/rinex/rnxobsfile.cpp	(revision 4539)
+++ trunk/BNC/src/rinex/rnxobsfile.cpp	(revision 4540)
@@ -490,5 +490,8 @@
 // Handle Special Epoch Flag
 ////////////////////////////////////////////////////////////////////////////
-void t_rnxObsFile::handleEpochFlag(int flag, const QString& line) {
+void t_rnxObsFile::handleEpochFlag(int flag, const QString& line, 
+                                   bool& headerReRead) {
+
+  headerReRead = false;
 
   // Power Failure
@@ -515,4 +518,5 @@
     }
     _header.read(_stream, numLines);
+    headerReRead = true;
   }
 
@@ -553,6 +557,9 @@
     readInt(line, 31, 1, flag);
     if (flag > 0) {
-      handleEpochFlag(flag, line);
-      continue;
+      bool headerReRead = false;
+      handleEpochFlag(flag, line, headerReRead);
+      if (headerReRead) {
+        continue;
+      }
     }
 
@@ -622,6 +629,9 @@
     readInt(line, 28, 1, flag);
     if (flag > 0) {
-      handleEpochFlag(flag, line);
-      continue;
+      bool headerReRead = false;
+      handleEpochFlag(flag, line, headerReRead);
+      if (headerReRead) {
+        continue;
+      }
     }
 
Index: trunk/BNC/src/rinex/rnxobsfile.h
===================================================================
--- trunk/BNC/src/rinex/rnxobsfile.h	(revision 4539)
+++ trunk/BNC/src/rinex/rnxobsfile.h	(revision 4540)
@@ -153,5 +153,5 @@
   t_rnxEpo* nextEpochV2();
   t_rnxEpo* nextEpochV3();
-  void handleEpochFlag(int flag, const QString& line);
+  void handleEpochFlag(int flag, const QString& line, bool& headerReRead);
 
   QString type2to3(char sys, const QString& typeV2);
