calculate_point_at_bearing() gives the correct bearing angle with a small error of ±0.5% which is accepted. However, distance is not calculated correctly.

Need to reverify the methods, the link explains the process of calculating the Point, based on which the function is defined.