Toggle in the control domain is easy.

Toggle in the signal domain... here are a couple of ways.

toggleff~.pd -- probably faster, but it may overflow after a long time (hours).

toggleff-forever~.pd -- will not overflow, but uses fexpr~ so it might be slower.

Both define a signal trigger as a crossing from <= 0 to > 0.

Was first looking into this in Max (which doesn't have a native one), then wondered what it would take in Pd. Not that much but it's enough that you don't want to build it out by hand every time.