A CountDownLatch would be my first suggestion.. Can you explain more why it won't work in your situation?
If you know how many active Fibers you have at the time you want to wait for them to finish *and* you know that the Fiber won't be receiving any more events from Channels, you could execute a task directly on the Fiber that decrements the CDL.
-pete
--
(peter.royal|osi)@pobox.com - http://fotap.org/~osi