anchor.diff:          | None ->  LLVM.ConstReal(LLVM.DoubleType(), 1.0)
         
   
  -      let nextVar = LLVM.BuildFAdd(builder, variable, step, "nextvar")
  +
         let cond = 
           let cond = codegenExpr finish
   
           // Compute the end condition.
           LLVM.BuildFCmp(builder, LLVMRealPredicate.LLVMRealONE, cond, LLVM.ConstReal(LLVM.DoubleType(), 0.0), "loopcond");
   
  +      let currentVar = LLVM.BuildLoad(builder, alloca, varName)
  +      let nextVar = LLVM.BuildFAdd(builder, currentVar, step, "nextvar")
  +      do LLVM.BuildStore(builder, nextVar, alloca) |> ignore
         // Create the "after loop" block and insert it.
         let loopEndBB = LLVM.GetInsertBlock(builder)
         let afterBB = LLVM.AppendBasicBlock(function', "afterloop")
  
positive.code:       // shadows an existing variable, we have to restore it, so save it now.
  
        do
          match Dictionary.tryFind var namedValues with
          | Some oldVal' -> 
            oldVal <- Some oldVal'
  
          | None -> ()
          namedValues.Add(var, variable)
  
        // Emit the body of the loop.  This, like any other expr, can change the
        // current BB.  Note that we ignore the value computed by the body, but don't
  
negative.code:     /// for/in
      | For of string * Expr * Expr * option<Expr> * Expr
      /// var <identifier> = <expr> 
      | Assign of Vars: seq<(Expr * Expr option)> * Body: Expr
  
      override expr.ToString() =
        match expr with
  