Nice solution.

I have thought about this business of allowing the channel to float (in fact, there's a thread, somewhere), and experimented a bit, but my results were inconclusive. Okay, that's...