The system of course does what is written in the manual, maybe just not the way you wish.
I am currently using:
one channel to enable altitude hold together with position hold
one channel to enable altitude limit together with geo fence
The way you wish to use it, need some kind of offset on each geolink function,
because altitude limit / geo-fence / position and altitude hold
all enable when the assigned channel is at +100
Someone asked to Thomas to implement the same way that is used on betaflight
but don't know if that will be implemented and when.
EDIT: ( found the topic )
viewtopic.php?f=21&t=5447&p=38865