I’d say this is the result of a closed group of people overthinking the philosophical aspects of a feature rather than looking at reality and the actual context. The result is immensly confusing.
First, philosophy aside: discrepancy of the concept of “negative” between the full track delay and the articulations within the same software is an absolute no-no in every aspect of product development. So already there should someone have said “stop”. Inconsistency is the best way of minimizing the greatness of user experience.
Then, let’s move to the philosophical aspect: Audio and music is on a timeline. That is how most people look at it. That is the numbers displayed in the Transport that everyone is used to working on. When time increases, the cursor moves to the right and the value of the position increases. Not just audio, anything interactice determined starts as 0 and ends at X.
An event happens on point 0 relative to itself (if zero index, which time as an unit is by default). If we want that to be played earlier, we subtract time from it, pushing it earlier, which gives a negative value. “Left” of the cursor.
If we pre-determine it’s position we say “it starts at 100”. If we want it earlier, we say “move it to 80”. Which is 100 minus 20. Not a single user I’ve ever met, or any video on the subject I’ve ever seen, has found it confusing that minus equals earlier. It’s crystal clear for everyone.
We say “move the vocals 10 bars earlier”, where “earlier” equals minus. That’s how communication works in a studio. We don’t say “increase the earlyness of the event with 10 bars”.
In this particular context, the thinking would be: “the sound is 100ms late". To compensate for that, we subtract 100ms. We don’t think “increase the negative value with +100ms”.
I suggest you take another look at this and change it to what “everyone” believes is the logical view of this in a timeline based context. I understand the mathematical “riddle” behind it, but it makes no sense in the context of reality. It’s a simple frontend fix that can easily be translated in the backend.