node {
void evaluate(Context ctx) {
Number count = getValue<output_OUT>(ctx);
if (isInputDirty<input_RST>(ctx))
count = 0;
else if (isInputDirty<input_INC>(ctx))
count += getValue<input_STEP>(ctx);
auto set = getValue<input_SET>(ctx);
if (count > set) count = 0;
emitValue<output_OUT>(ctx, count);
}
}