Have you considered Stonefield's SDT?
If you place error trapping code in your Main.prg, and trap for Header, index and memo field errors, you can place a call to SDT to repair the damaged file, write code to insert the problem into your error trapping routine, and the user will not be aware of a problem, unless you decide to pop up a message.
If you are not aware of the url, it is
www.stonefield.comTom