i just looked at the patch.
the explanation is simple, and you are aready half way there (with your assumption about split).
the problem is that the MOUSE is simply not fast enough to produce all possible numbers from 0-127 at the slider output.
this is a general problem for GUI objects or physical controllers and can be solved by allowing the mouse to produce more data then needed.
the mistake you made here is that e.g. [split 0 32] will not properly set the first slider to "0" when the incoming CC sends "127", because "127" of course wont pass the split object. solution: you must generate the "reset" values elsewhere, before the split(ters). OR, you could use [clip] instead of split, but this will make the patch handel tons of data nowhere needed.
however ... i would do it with expr anyway. sorry crowd. :D
[split] can be replaced by [expr min(max($i1\,$i2)\,$i3)]
[map] can be replaced by [((($i1-$i2)/($i3-$i2))*($i5-$i4))+$i4]
the reversed part 127-1 can be made by using map as above with reversed inputs for the min out and max out values, [((($i1-$i2)/($i3-$i2))*($i4-$i5))+$i5], the input range of n to m then must be changed accordingly.
the whole thing is getting much easier when you use float, a simple /127. at the beginning and you are ready to rock.
[i´ve deleted the code, will do it in maxmsp later]
this has not been tested yet, as i dont have maxmsp here.
oh, and btw, you are not very consequent: at the low end the first slider starts from 0, at the high end it remains up. ;)