The numbers are generated on create of the object, but only stored when committed.
They are guaranteed to be unique, but not sequential (with gaps). This could be trouble some for auditing purpose.
If you want to have guaranteed unique and sequential number, you have generate it on commit, though this can be tricky too.
Just a guess: Might be related to native offline? Not sure, though I can imagine that the odd numbers are reserved for offline created objects?
did you find an answer to this issue?
I may have the same problem, just with a different offset (in my case usually 33 or multitudes of this).