diff --git a/io/io/src/TFileCacheWrite.cxx b/io/io/src/TFileCacheWrite.cxx
index 5cdd1d8f547ee35ed6b5a6857949363246e3fb80..f9bdf341465518eedb12c38cd7435b5ca4a8cf79 100644
--- a/io/io/src/TFileCacheWrite.cxx
+++ b/io/io/src/TFileCacheWrite.cxx
@@ -133,6 +133,7 @@ Int_t TFileCacheWrite::WriteBuffer(const char *buf, Long64_t pos, Int_t len)
       if (len >= fBufferSize) {
          //buffer larger than the cache itself: direct write to file
          fRecursive = kTRUE;
+         fFile->Seek(pos); // Flush may have changed this
          if (fFile->WriteBuffer(buf,len)) return -1;  // failure
          fRecursive = kFALSE;
          return 1;