anchor.diff:            raise (CurrentListReturn (acc |> List.map snd))
           else 
             let (index, bestChild, bestChildCost) = childNodes |> List.mapi (fun idx n -> idx, n, costModel n) |> List.minBy (fun (_,_,c) -> c)
  -          reporter.step cur index (bestChild, bestChildCost)
  +          reporter.step cur index (childNodes.Length) (bestChild, bestChildCost)
             if(bestChildCost < currentBestCost) then
               currentBestCost <- bestChildCost
               currentBest <- bestChild
  
positive.code:         
            let randomChild = childNodes.[index]
            let randomChildCost = costModel randomChild
            reporter.step cur index (randomChild, randomChildCost)
            let (nextChild, nextChildCost) = 
              if(randomChildCost < curCost) then
                if(randomChildCost < currentBestCost) then
                  currentBestCost <- randomChildCost
                  currentBest <- randomChild
                (randomChild, randomChildCost)
              else
                if (rand.NextDouble() < System.Math.Pow(System.Math.E, (randomChildCost - curCost) / temprature)) then
                  (randomChild, randomChildCost)
                else
                  (curNode, curCost)
  
negative.code:   type Reporter<'a> = 
      { 
        init: string -> unit; 
        step: int -> int -> int -> ('a * double) -> unit;  // Step#, Rule index, Rules#, NodeCost
        finish: ('a * double) list -> ('a * double) -> unit // All NodeCosts, Best NodeCost
      }
    
  