Eric,
A mismatch of the headers record count and the number of records in the table is usually a result of the record being written but the header not being updated. Fox writes the data first and then writes to the header. If write caching is enable don tehserver it is possible that the record got written adn Fox wrote the header but it hasn't been saved by the write cache. This creates the very situation you describe.
Another cause would be Fox crashing after the record write and before the header write. Out of curiosity, what is the return value from TableUpdate()?