anchor.diff:  
               let next = 
                   let enumerator = source.GetEnumerator()
  -                let valueReady = ref true
  +                let continueFlag = ref true
                   fun () -> 
  -                    if not !valueReady || not <| enumerator.MoveNext()  then
  +                    if not !continueFlag || not <| enumerator.MoveNext()  then
                           enumerator.Dispose()
                           false
                       else
  -                        valueReady := iterf enumerator.Current
  +                        continueFlag := iterf enumerator.Current
                           true
               (bulk, next)
           Stream iter
  
positive.code:                     i <- i + 1
              let next = 
                  let i = ref 0
                  let valueReady = ref true
                  fun () -> 
                      if not !valueReady || !i >= source.Length then
                          false
                      else
                          valueReady := iterf source.[!i] 
                          incr i
                          true
              (bulk, next)
  
negative.code:                         if !firstValueReady && !secondValueReady then
                              firstValueReady := false
                              secondValueReady := false
                              continueFlag := iterf (f !firstCurrent !secondCurrent)
                              true
                          else
                              false)
  