Perhaps $msfile should be doing a bit more parameter checking.
$msfile() is neither of the form $msfile(dir,title,oktext) or $msfile(N), so should probably give a more elucidating error message (invalid parameters to $msfile, perhaps)
However I confirm that $msfile(0) does appear to return 0 if teh preceding $msfile(<dir>) had returned -1.