We use custom auto-numbers on several custom record types in our Drupal 6 system (the following should also work for Drupal 7). To make it work, we implemented a rule using the Rules module that fires upon saving the record.
The rule runs ON event After saving content and should verify that you're saving the content type you're interested in. (For example, if you're auto numbering Widgets, add an IF for Content type is Widget.
For your actions, put an *Populate created content's 'custom_number' field* action on the rule (where 'custom_number' is your auto-number field), and follow this example:
$number = db_result(db_query(
"SELECT MAX(field_custom_number_value) FROM {content_type_widget}"));
if(empty($number) || $number < 200) { // Replace 200 with your starting value
$number = 200;
} else {
$number++;
}
return array( 0 => array('value' => $number) );
Every time you save a new widget, the system runs a query to find the max custom_number already assigned. If none are assigned, or a number less than 200 is assigned, the system will assign 200; otherwise, it will assign 1 more than the current max number assigned.
If you wanted to, you could also add a line of debug code to add a watchdog line or other debug event in the event that a number less than your desired minimum is discovered.