diff --git a/Data/Stream/Branching.hs b/Data/Stream/Branching.hs
--- a/Data/Stream/Branching.hs
+++ b/Data/Stream/Branching.hs
@@ -18,17 +18,19 @@
    , tail   -- Stream f a -> f (Stream f a)
    , tails  -- Stream f a -> Stream f (Stream f a)
    , inits1 -- Stream f a -> Stream f (NonEmpty a)
-   , unfold -- 
+   , scanr  -- (a -> f b -> b) -> Stream f a -> Stream f b
+   , scanl  -- (a -> b -> a) -> a -> Stream f b -> Stream f a
+   , unfold
   ) where
 
-import Prelude hiding (head, tail)
+import Prelude hiding (head, tail, scanr, scanl)
 
 import Control.Applicative
 import Control.Comonad
 import Control.Comonad.Apply
 import Control.Monad
 import Data.Functor.Apply
-import Data.Stream.NonEmpty hiding (tail, tails, unfold, head)
+import Data.Stream.NonEmpty hiding (tail, tails, unfold, head, scanr, scanl)
 import qualified Data.Stream.NonEmpty as NonEmpty
 
 #ifdef GHC_TYPEABLE
@@ -54,6 +56,14 @@
 -- | equivalent to inits sans the initial [] context
 inits1 :: Functor f => Stream f a -> Stream f (NonEmpty a)
 inits1 (a :< as) = (a :| []) :< (fmap (NonEmpty.cons a) . inits1 <$> as)
+
+scanr :: Functor f => (a -> f b -> b) -> Stream f a -> Stream f b
+scanr f (a :< as) = f a (head <$> bs) :< bs
+  where bs = scanr f <$> as
+
+scanl :: Functor f => (a -> b -> a) -> a -> Stream f b -> Stream f a 
+scanl f z (b :< bs) = z' :< fmap (scanl f z') bs
+  where z' = f z b
 
 instance Functor f => Functor (Stream f) where
   fmap f (a :< as) = f a :< fmap (fmap f) as
diff --git a/streams.cabal b/streams.cabal
--- a/streams.cabal
+++ b/streams.cabal
@@ -1,6 +1,6 @@
 name:          streams
 category:      Control, Comonads
-version:       0.1.1
+version:       0.2
 license:       BSD3
 cabal-version: >= 1.6
 license-file:  LICENSE
@@ -63,6 +63,7 @@
   /Changes since 0.1/: 
   .
   * A number of strictness issues with 'NonEmpty' were fixed
+  .
   * More documentation
 
 source-repository head
