I can help you here.

What you're seeing is an effect of DBCS (Double byte Character systems) not all vb functions support this properly. (eg, len and lenB return different values for the same text when in DBCS format.

There's no information on how the lof function is reading the file, so try the filelen() function instead and see if it works better.

probably what is happening with read past EOF is this:

lof returns (eg) 1000 bytes of size
this is only 500 DBCS characters
if you read till 1000 you'll get the above error at char 501!

just as an experiment try dividing the Lof by 2 before you read! ( It looks like the lof returns byte and the input reads in characters)

Let me know how you go. Most of my time is spent using English VB on Japanese (Kanji) system