Button Controller allows the use of conditional actions, which might be able to help. For example, you can say to dim down if the light is currently at 99 or dim up if it's currently <99 or whatever threshold you want. You could do something similar by checking the current color values, though that will take a bit more work. For things like that second use case, I actually wrote an app to help with my use case that you might be interested in, too:
(Not sure if it will help with your first use case--it's not something I envisioned, but there are a lot of options and it might...)
You can also use things like local variables in Rule Machine or global variables (overkill, but it would work...) in Button Controller or Rule Machine to track whatever you need, like how many times a button has been pressed (or whatever event).