This problem is fairly complex. Fixing 0000137 will help improve it, but not very much, in some cases that will actually make it worse!
The problem is that the scheduling is based on an average speed and needs to be based on the average for the period involved, which is a section of a complex shape. Fortunately there is enough time to do complex calculations on it as it's only an issue at very low engine speeds.
On the other hand, tuning it would be extremely difficult, so a simpler approach is likely preferable. The computer scientist in me wants to engineer it to perfection, but the pragmatist knows that no one will be capable of using it or actually use it, even if they do know how to.
Imagine an N cylinder engine with a single edge to schedule from for each cylinder. A decoder cycle consists of a single period over which the following four things happen:
engine spends a bit of time going fast
engine spends a bit of time slowing down
engine spends a bit of time going slow
engine spends a bit of time speeding up
The end result is something like a sine wave.
Now, if you take the average, and you schedule something to finish just before the start of any given cycle (ie final end time distance from start time = (1 to N) * period of 1/N of a cycle, then the schedule is perfect!
However if you schedule over the fast 1/4 to 1/2 of the part cycle, then you end up with your event firing at a very wrong angle, very late.
Likewise, if you schedule over the slow 1/4 to 1/2 of the part cycle, then you end up with your event firing at very wrong angle, very early. This is the issue.
A very early spark while cranking is VERY bad for your starter motor.
The only real solution to this problem that is simple and straight forward is to fix 0000137 and time the signal such that the end point is fired from something very close to TDC. IE, place the signal edge at around 10 BTDC and time the engine to be that or later timing while cranking.
Nevertheless, a solution could be developed to handle the issue; though it would be complicated.
Note, dynamic dwell also affects this, so the simple solution must include a fixed dwell AND fixed timing based on a small 3d curve of BRV and RPM, or something like this.