Hi, I've been working on something similar but not as fully featured as yours.
Haven't committed to github yet because not happy with it yet. Demo here: http ://www.jackofallorgans.com/bmi-centile/
Could the discrepancies perhaps be due to the who implementation using linear interpolation to estimate the LMS, rather than rounding the age before hand?
I was checking decimal Vs floating point arithmetic and I didn't get much of a discrepancy using decimal.js.