That is exactly what is expected to happen: SQL does not "look" at past values when assigning a new ID value because previous values are "used" and could potentially have other data which was related to that ID (though not in a formal FOREIGN KEY relationship) stored elsewhere.
If you want incrementing numbers, use the
ROW_NUMBER[
^] function instead and define a sort criteria - but remember that the values can change unlike ID values which should remain constant forever.