Firstly many thanks for the vast number of detailed and very helpful replies - there are too many to quote in detail so ill try and reply/comment to the average of the comments.

Of greatest interest is the table idea - ive not tried this but it would be very easy to produce in excel with my equation applied and use excel to format for pasting into the code.

I shall not clutter this post asking how to do it as ill need to read up and try a few things first to get to grips with it.

As always, i try to work on the theory "nothing is impossible", combined with "somebody must have asked this question before" and the answers are generally always there!

The "loss of significance" is new to me as a term but i fully get what it means and i beleive this is whats affecting the repeatibility.

This was why i mapped the 0-1024 to a smaller/narrower range of numbers to try to get the coefficients and their sub-results within a calculable range without being too big or too small.

I pull everything out via serial and if, in excel, i flow through from 0-1024 to my mapped range and apply the formula then i get the correct and repeatable results so i know everything except the main calculation is correct.

The guts of the code which does the calc looks like this:

` if (SetMLL < mVMeasured < SetMHH)`

{

BiasCurve = (x3 * mVMeasured * mVMeasured * mVMeasured) + (x2 * mVMeasured * mVMeasured) + (x * mVMeasured) + c;

}

before and after this i have statements to govern the output when the result is below the "LL" [=LowLow] point or above the "HH" [=HighHigh] point.

I hear all that's said about avoiding unnecessary conversions and i would normally just try to work with the ADC values but they produced coefficients which were crazy.

Ill try the lookup table and report back how i get on.

Speed is not an issue, i need perhaps a 1-2sec response time so even ms is fine.

Thanks again to all.