diff --git a/src/Text/ParserCombinators/UU/CHANGELOG.hs b/src/Text/ParserCombinators/UU/CHANGELOG.hs
--- a/src/Text/ParserCombinators/UU/CHANGELOG.hs
+++ b/src/Text/ParserCombinators/UU/CHANGELOG.hs
@@ -1,5 +1,9 @@
 -- | This module just contains the CHANGELOG
 --
+-- Version 2.7.2.2
+--
+-- fixed the case where the left hand operand of  <<||> strats with a monadic bind
+--
 -- Version 2.7.2.1
 --
 -- removed a left-over from debugging
diff --git a/src/Text/ParserCombinators/UU/Demo/MergeAndPermute.hs b/src/Text/ParserCombinators/UU/Demo/MergeAndPermute.hs
--- a/src/Text/ParserCombinators/UU/Demo/MergeAndPermute.hs
+++ b/src/Text/ParserCombinators/UU/Demo/MergeAndPermute.hs
@@ -126,6 +126,8 @@
 --   a log-file which contains all events generated by a collection of concurrently running transactions.
 pABC :: Grammar Char
 pABC = mkGram (pa *> pDigit ) >>= (\ d ->  mkGram (pb *> pSym d) *> mkGram (pc *> pSym d))
+pABC' :: Grammar String	
+pABC' = (\ a d -> d:a) <$> pA <*> (pDigit' >>= \d ->  pB *> mkGram (pSym d) *> pC *> mkGram (pSym d))
 
 
 
diff --git a/src/Text/ParserCombinators/UU/MergeAndPermute.hs b/src/Text/ParserCombinators/UU/MergeAndPermute.hs
--- a/src/Text/ParserCombinators/UU/MergeAndPermute.hs
+++ b/src/Text/ParserCombinators/UU/MergeAndPermute.hs
@@ -91,11 +91,11 @@
            ++ [ fc `Bind` (\c -> pg <||> c2fb c)   | fc `Bind` c2fb   <- ql]
           )   (pe <*> qe)                                         
 
--- |  The function `<<||>` is a special version of `<||>`, whch only starts a new instance of its right operand when the left operand cannot proceed.
---   This is used in the function 'pmMany', where we want to merge as many instances of its argument, but not more than that.
+-- |  The function `<<||>` is a special version of `<||>`, which only starts a new instance of its right operand when the left operand cannot proceed.
+--   This is used in the function 'pmMany', where we want to merge as many instances of its argument, but no more than that.
 (<<||>):: Functor f => Gram f (b->a) -> Gram f b -> Gram f a
 pg@(Gram pl pe) <<||> ~qg@(Gram ql qe)
-   = Gram (   [ p `Seq` (flip  <$> pp <||> qg)| p `Seq` pp <- pl]
+   = Gram (   [ p `Seq` (flip  <$> pp <||> qg)| p `Seq` pp <- pl] ++ [p `Bind` (\ a -> pp a <||> qg)| p `Bind` pp <- pl]
           )   (pe <*> qe)
 
 
@@ -116,9 +116,9 @@
              where mkParserAlt (p `Seq` pp) = sep *> p <**> mkParserP sep pp
                    mkParserAlt (fc `Bind` c2fa) = fc >>=  (mkParserP sep . c2fa)
 
--- | Run a sufficient number of  @p@'s in a merged fashion, but not more than necessary!!
+-- | Run a sufficient number of  @p@'s in a merged fashion, but no more than necessary!!
 pmMany :: Functor f => Gram f a -> Gram f [a]
-pmMany p = let pm = (:) <$> p <<||> pm <|> pure [] in pm
+pmMany p = let pm = ( (:) <$> p <<||> pm ) <|> pure [] in pm
 
 
 
diff --git a/uu-parsinglib.cabal b/uu-parsinglib.cabal
--- a/uu-parsinglib.cabal
+++ b/uu-parsinglib.cabal
@@ -1,5 +1,5 @@
 Name:                uu-parsinglib
-Version:             2.7.2.1
+Version:             2.7.2.2
 Build-Type:          Simple
 License:             MIT
 Copyright:           S Doaitse Swierstra 
