I can't reproduce this here, and I wouldn't really expect to. $read re-opens the file for each call and doesn't keep any kind of cache to my knowledge.

It's more likely to be a problem with your script. If you're calling $read on a timer make sure it's evaluated when the timer fires, not when you start it. The same goes for other commands, notably /scon.

For example, this would read a random line from versions.txt before starting the timer and then send it to #channel twice:
Code:
alias readtest {
  .timer 2 5 msg #channel $read(versions.txt,n)
}
Whereas this would read a random line from versions.txt each time the timer fires:
Code:
alias readtest {
  .timer 2 5 msg #channel $!read(versions.txt,n)
}