May I suggest another improvement.
Whenever you change the workarea, current index, and the record pointer (as is done in the AutoSeek() method), save and restore the original state of the database. The reason this is useful is that the database may also being used elsewhere in the program and restoring the databases' state prevents hard-to-find bugs.
Regards,
James