I don't know dbf doctor, how aged is that tool? If it doesn't know VFP9 dbfs it can't repair them.
Besides both the solutions had/have a danger in them.
Being able to open a dbf in VFP6 still does not tell VFP6 to "understand" the table. If it contains new field types introduced in VFP7-9, VFP6 can't cope with them, also not copy them.
And copying to e temp.dbf, zapping the dbf and append back can not only crash at the wrong time, the copy to might cuase shortened names and data could not appended back fully.
The simplest reapir would just open the dbf in tablevalidate set to 0, append blank, delete - these two steps correct the reccount of the dbf header, then pack to get rid of the new empty record which could be harmful with any next append blank, if there are indexes enforcing a uniqueness of values, you can't append blank twice in such tables before the blank record has got its individual values and not removing the blank record with PACK could cause that later when the application needs to APPEND BLANK.
All that is only repairing the reccount header defect, if you had more serious defects you can't repair in such ways.
You lost a record, at least, a record not getting into the dbf has caused the reccount to get higher than the number of real records and VFP9 checks file whether file length is in conjunction with the header. But it's not the only possible defect, there are more serious.
Bye, Olaf.