Hi Tracy:
Just a WAG, but what could be happening is that when you call sys_num("CARIER") the record pointer in CARRIER is changing and placing you at EOF. Because you have row buffering set ON, VFP will automatically perform a TABLEUPATE when the record number moves. So when you return back from sys_num and you REPLACE ca_sysnum you are at EOF, but because of the row buffering the other 9 fields were already saved when the record pointer moved.
HTH,
--Paul