Diamond Step Algorithm