@MikeyH Hi Mike,
I'm glad it works for you 😉
For the "variable decimal point" I would use blocks MUL and CNDR. CNDR configure so it reflects the changing of the gain according to the value.
You will probably find many other solutions which will lead you to the desired behaviour (e.g. SSW for switching gain according to the value)
Hope it helps.
Cheers,
Tomas