Then I surmise that your program either includes numbers that are not assigned, (i.e. blank), as available numbers, or it rebuilds it's list of available numbers, each time it starts, with blank numbers being restored and put as available.
Sometimes, when you have a record, and you want to remove it, the program doesn't actually *remove* the record. Instead, it just "zero's it out", by assigning a value to it that tells the program "this number is not available".
That value (a sentinel value), may be 0, -1, -99 or any number of choice that wouldn't normally be used, you see?
Do you have some code you can post or doc's for this program?