diff --git a/Data/PSQueue.hs b/Data/PSQueue.hs
--- a/Data/PSQueue.hs
+++ b/Data/PSQueue.hs
@@ -234,10 +234,13 @@
       case f Nothing of
         Nothing -> empty
         Just p  -> singleton k p
-    Single k' p ->
-      case f (if k==k' then Just p else Nothing) of
-        Nothing -> empty
-        Just p' -> singleton k p'
+    Single k' p 
+      | k == k'   ->  case f (Just p) of
+                        Nothing -> empty
+                        Just p' -> singleton k' p'
+      | otherwise ->  case f Nothing of
+                        Nothing -> singleton k' p
+                        Just p' -> insert k p' $ singleton k' p
     tl `Play` tr
       | k <= maxKey tl -> alter f k tl `unsafePlay` tr
       | otherwise      -> tl `unsafePlay` alter f k tr
diff --git a/PSQueue.cabal b/PSQueue.cabal
--- a/PSQueue.cabal
+++ b/PSQueue.cabal
@@ -1,5 +1,5 @@
 Name:                PSQueue
-Version:             1.0
+Version:             1.1
 License:             BSD3
 License-file:        LICENSE
 Author:              Ralf Hinze
