Can't give a definitive reason but I changed the file that I used to check for Year End to one which is never normally opened (a .BAK file that is always created during the year end process) and I no longer have the 'Read Only' error.
This is odd because if it is YE, then the file never gets opened anyway because it doesn't exist! - I expect reset(f) to return error 3 = 'Path Doesn't exist' which means that the directory & files for the new year haven't been created.
Hey Ho - - - the joys of programming

As it happens, this blip led me to realize that I had forgotten to log both a bank payment in and a Purchase Invoice for last year.