new calculation, buggy.
better calculation.