Yes, performDegreeToKey has an eccentricity, which you can easily edit locally.
It divides stepsPerOctave by twelve, but it’d be nicer if it divided twelve by stepsPerOctave, so:
var scl = Scale((0, 3 .. 21), 24);
[0, 0s, 1b, 1].collect { | each | each.degreeToKey(scl, 24) } == [0, 0.5, 1, 1.5]
C.f.:
and
(It’s the same difference if stepsPerOctave is twelve…)