I suspect there are some rounding issues, or lookup table issues.

The exact value (using more precise molar masses of 84.006 and 100.088) is 167.864g (to raise TA by 10 in 10000l). This is from the hand calculation and also confirmed with Chem geek's PoolEquations spreadsheet, which is the basis for PoolMath.

But effects of adding gives 10.0 (it rounds TA to natural numbers above 10, and to .1 below 10) for values between 167.1g and 176.2g.

Not sure how the algorithm in the main section works. Since it kind of works backwards to give an estimated amount to be added, it just gives a value that yields the desired change with the required precision. Since you never know your pool volume that precisely, it doesn't really matter.

I guess, to mix a reference sample, you either have to crunch the numbers by hand, or use chem geek's spreadsheet (a forum search will get you there, but it takes a while to master it).

PoolMath has been designed to be used as easy as possible with a precision that is sufficient for day to day pool use.

The effects of adding is pretty exact where simple equations are available, but still rounds the end result in a way that's appropriate for pool use, and it doesn't always consider cross effects from other water parameters, like impact of TA, CYA, Borates on pH calculations, it uses simplifications that work in typical parameter ranges. Only chem geek's spreadsheet solves the chemical equilibrium equations "from scratch" - I love it, but it's too complex for a general role-out.