Your YieldToMarurity calculation uses formula for approximate YTM (please read carefully mentioned source).
In the middle of http://www.financeformulas.net/Yield_to_Maturity.html there's formula for present value of a bond.
To get precise YTM you have to reverse formula to get r from it.
It's hardly reversible, and you have to approximate it with binary search or using Newton–Raphson method.
Your YieldToMarurity calculation uses formula for approximate YTM (please read carefully mentioned source).
In the middle of http://www.financeformulas.net/Yield_to_Maturity.html there's formula for present value of a bond.
To get precise YTM you have to reverse formula to get r from it.
It's hardly reversible, and you have to approximate it with binary search or using Newton–Raphson method.