diff --git a/kernel/fatfs.c b/kernel/fatfs.c
index 43d2d18..bab8a29 100644
--- a/kernel/fatfs.c
+++ b/kernel/fatfs.c
@@ -1206,6 +1206,7 @@ long rwblock(COUNT fd, VOID FAR * buffer, UCOUNT count, int mode)
   unsigned secsize;
   unsigned to_xfer = count;
   ULONG currentblock;
+  ULONG cachedfilesize = fnp->f_dir.dir_size;
 
 #if 0 /*DSK_DEBUG*/
   if (bDumpRdWrParms)
@@ -1472,8 +1473,9 @@ long rwblock(COUNT fd, VOID FAR * buffer, UCOUNT count, int mode)
     buffer = adjust_far((char FAR *)buffer + xfr_cnt);
     if (mode == XFR_WRITE)
     {
-      if (fnp->f_offset > fnp->f_dir.dir_size)
+      if (fnp->f_offset > cachedfilesize)
       {
+        cachedfilesize = fnp->f_offset;
         fnp->f_dir.dir_size = fnp->f_offset;
       }
       merge_file_changes(fnp, FALSE);     /* /// Added - Ron Cemer */
