Thanks for your update, more understable for me !
A dirty solution would be to loop until you create enough items to get the ID you want, and then delete those items, and the create the real one, which will get the ID you need I guess.
Else, when you create an Item, can't you specify its ID ? I guess not, else you wouldn't ask this question.
Edit while writing : I think this can solve your problem ! I googled it a lot, and it seems that Item's ID are readonly field, you need to bypass this, and you can set the ID of your Item with :
#Get your list
#Disable the readonly on ID field
$list.Fields[SPBuiltInFieldId.ID].ReadOnlyField = false;
#Or maybe have a try with something like this instead
#$list.Fields["ID"].ReadOnlyField = $false
#Add your item, and choose your item ID with $itemID
$item[SPBuiltInFieldId.ID] = $itemID;
#Update your item
#Put back the readonly on the ID field
$list.Fields[SPBuiltInFieldId.ID].ReadOnlyField = true;
I've not test it, but it seems pretty good.
(here the link that helps me)
Hope I help after 1 hour of useless comments !
Edit2 : If you can tell me if this works great, because I'm sure that one day, I will need it !
Edit3 : Maybe you have to add this at the beginning, and don't forget to put it as default at then end of your script :
web.AllowUnsafeUpdates = true;
site.AllowUnsafeUpdates = true;