anchor.diff:                  | _ -> ()
               let next = 
                   let enumerator = source.GetEnumerator()
  -                let flag = ref true
  +                let valueReady = ref true
                   fun () -> 
  -                    if not !flag || not <| enumerator.MoveNext()  then
  +                    if not !valueReady || not <| enumerator.MoveNext()  then
                           match enumerator with 
                           | :? System.IDisposable as disposable -> disposable.Dispose()
                           | _ -> ()
                           false
                       else
  -                        flag := iterf (enumerator.Current :?> 'T)
  +                        valueReady := iterf (enumerator.Current :?> 'T)
                           true
               (bulk, next)
           Stream iter
  
positive.code: 
              let next = 
                  let enumerator = source.GetEnumerator()
                  let flag = ref true
                  fun () -> 
                      if not !flag || not <| enumerator.MoveNext()  then
                          enumerator.Dispose()
                          false
                      else
                          flag := iterf enumerator.Current
                          true
              (bulk, next)
          Stream iter
  
negative.code:                     i <- i + 1
              let next = 
                  let i = ref 0
                  let valueReady = ref true
                  fun () -> 
                      if not !valueReady || !i >= source.Count then
                          false
                      else
                          valueReady := iterf source.[!i] 
                          incr i
                          true
              (bulk, next)
  