I have a Lamotte Brewlab Plus test kit and have tested my water and entered the information into Bru'n Water's supporter addition spreadsheet. I have hard water with high Alkalinity. My untreated Cation/Anion Diff comes out good at .02.
That doesn't tell you anything as the LaMotte kit used the fact that the anion cation difference is 0 to calculate the sodium. Thus any LaMotte kit analysis will have perfect balance.
My Total Alkalinity measured at 120 CaCO3 ppm (the test has a 10ppm range). My pH is 7.7, I have a meter that I calibrated and measured at room temp. Before brewing I decided to test out the spreadsheet and the sparge lactic acid addition on a 1 gallon test sample. According to the spreadsheet to bring my pH down to 5.5 and to get my Alkalinity below 25, my addition should be .70 ml lactic acid at 88%.
Adding 0.7 mL of lactic acid to a gallon of water with alkalinity 120 and pH 7.7 would drop the pH to 5.57 and the alkalinity to 18 ppm as CaCO3. But also note that your goal isn't to get the alkalinity down to 25 or any other number. It is to get your alkalinity down to 0
at mash pH. This is very simply accomplished by adding enough acid to bring the water to mash pH.
I used a pipette to measure out the acid and added to one gallon of my filtered tap water at room temp. The pH dropped to 4.9. I was worried the Alkalinity test was off and I had my local pool supply store test my water and that result was 112 ppm.
Were the alkalinity actually 112 instead of 120 the pH would be 5.34 and the alkalinity after treatment 11 ppm.
I retested and realized the first two times I placed the pipette into the acid solution and then put it down in the water and stirred with it. This added the residual acid that clung to the outside of the glass pipette.
That is, of course, not how a pipette is intended to be used but it would take a 6% overage on the amount of lactic acid (0.74 mL) to get the pH down to 4.9.
On my retest I corrected that problem and poured the treated water from one vessel to the other to stir in the acid. My results came back much better, 5.7.
That's not much better as it implies that you measured 17% less lactic acid (0.58 mL) than intended.
Note that if you want pH 5.4 from water that is at 120 ppm alkalinity the spreadsheet should tell you that you need 0.74 mL. If the water is really at 112 the correct amount of acid is 0.65 mL.
In summary there are several things conspiring to give you variations in your readings.
1) Most fundamental to the problem, is that when you acidify water to low pH (and mash pH is getting there) you have removed most of the bicarbonate which means that the water has relatively little buffering capacity and a small error can make a lot of difference.
2)You are uncertain as to the alkalinity of the water sample,
3)You are using a spreadsheet that isn't as precise in its calculations as we would like it to be
4)You may not be using the pipette correctly,
5)There is going to be some uncertainty in the strength of the lactic acid solution you are using. That is quite a few factors and given that any one of them, even though the associated error is small, can have a pretty large effect on observed pH, it is really not surprising that their combined effects can have you all over the map.
There are some things that can be done to improve the situation with respect to all of these except 1).
1)You are stuck with the laws of physics (or chemistry here depending on how you like to look at it)
2)Make an accurate alkalinity measurement for each water sample
3)Get a more accurate calculator or learn how to do the calculations yourself
4)Learn how to use a pipette properly.
5)Assay the acid when you buy it and occasionally thereafter.
Do all these and you have become a lab rat - not a brewer. Accordingly, the best way to set a volume of water to mash pH is to use a spreadsheet to get a ROM number (the 0.7 mL here) and then add most of it to the water being treated with stirring, check pH and add more acid in smaller increments while checking pH until you hit the target. If you undershoot (pH goes too low) add some more water. With a little practice you ought to be able to hit the target pH pretty closely.
The other thing to keep in mind is that if you shoot for, say, 5.4, and hit 5.1 that really doesn't matter much because given the low buffering that means that you only have added 0.6 mEq extra protons to each gallon of the treated water. That gallon of water would typically mash 3 pounds of grain which, typically, would require 5.5 mEq of acid to reach pH 5.4. The extra 0.6 mEq would only shift such a mash by 0.01 pH or so.