@Seán Yes, you can do it with an abstraction, you can do the same with a subpatch.
Here are two additional ways to protect against stack overflow:
[change] will let the same value through only once. The downside is that it is set to zero from the start, so if you want to allow zero to come through from the beginning, you can use the second case which is like [change] but is set to -1 (assuming that -1 is not used as a value).
But if you think about it, my example above already does almost exactly what you want, using sends and receives to separate the GUI from the program logic. In my humble opinion, if you think GUI and program logic separately, it frees the mind.
GUI objects have one send and one receive, so everything else has to be done outside. Here is a slightly modified version of the above patch to illustrate that. You can of course rename the sends and receives to your liking: fade-out-in2.pd