It seems the modbus.write_register service wont allow negative numbers, but we can write a positive number that when interpreted as a signed 16-bit integer it turns into the negative number we want. So for -1 you would write 65535, -2 is 65534 and so forth.
I tested this just now on my VVM S320, setting register 30 (i.e. heating curve offset). Verified both by reading it back in home assistant and using the MyUplink app. You can use 2’s compliment to turn e.g. negative slider values into the correct value to write. I’m new to everything HA and it’s the middle of the night so that will be a task for another day. I’ll post the configuration then, unless somebody beats me to it.
Edit: Ehm actually just add 65536 to the number, if it’s negative