Casting algorithm