diff --git a/Control/Concurrent/Thread/Group.hs b/Control/Concurrent/Thread/Group.hs
--- a/Control/Concurrent/Thread/Group.hs
+++ b/Control/Concurrent/Thread/Group.hs
@@ -35,6 +35,7 @@
     , new
     , nrOfRunning
     , wait
+    , waitN
 
       -- * Forking threads
     , forkIO
@@ -67,7 +68,7 @@
 import System.IO                        ( IO )
 
 -- from base-unicode-symbols:
-import Data.Eq.Unicode                  ( (≢) )
+import Data.Ord.Unicode                 ( (≥) )
 import Data.Function.Unicode            ( (∘) )
 
 -- from stm:
@@ -105,7 +106,10 @@
 
 * 'nrOfRunning' yields a transaction that returns the counter.
 
-* 'wait' blocks as long as the counter is not 0.
+* 'wait' blocks as long as the counter is greater than 0.
+
+* 'waitN' blocks as long as the counter is greater or equal to the
+   specified number.
 -}
 newtype ThreadGroup = ThreadGroup (TVar Int) deriving (Eq, Typeable)
 
@@ -124,8 +128,17 @@
 
 -- | Convenience function which blocks until all threads, that were added to the
 -- group have terminated.
+--
+-- Note that: @wait = 'waitN' 1@.
 wait ∷ ThreadGroup → IO ()
-wait tg = atomically $ nrOfRunning tg >>= \n → when (n ≢ 0) retry
+wait = waitN 1
+
+-- | Convenience function to help place an upper bound on the number
+-- of threads in the group.
+--
+-- Blocks until there are fewer threads occupied than the specified number.
+waitN ∷ Int -> ThreadGroup → IO ()
+waitN i tg = atomically $ nrOfRunning tg >>= \n → when (n ≥ i) retry
 
 
 --------------------------------------------------------------------------------
diff --git a/threads.cabal b/threads.cabal
--- a/threads.cabal
+++ b/threads.cabal
@@ -1,5 +1,5 @@
 name:          threads
-version:       0.5.0.3
+version:       0.5.1.0
 cabal-version: >= 1.9.2
 build-type:    Custom
 stability:     experimental
