Dear Graham,
This is not a bug. It is intentional. The last onset added is to indicate the duration of the chord-seq. It was always the case in OM. Indeed, it doesn’t seem very logical but very useful. It is the same case if you enter a simple list of midics such as '(6000 6100 6200), The output of chord-seq’s lmidic will turn into: '((6000) (6100) (6200)). You can think of it as “rules of behavior” of the chord-seq once evaluated. It will format the given inputs to conform with it own way to deal with its values.
If you enter your onsets as '(0 500) it is ok. The chord-seq will recalculate the last “ending” onset which by the way is not an onset. That’s why it is somewhat disturbing. But you’ll get the duration of the last chord in it.
Best
K