At 500 yards your 0.9moa miss is approximately 5 inches high. At 900 yards, your misses are 1.5 to 2.0 moa, roughly double what they are at 500yds, suggesting a linear progression, which itself suggests an input problem.
Just a few possibilities / thoughts:
Applied Ballistics suggests that when there's an impact variance within supersonic range, the first factor to be checked is muzzle velocity. The only way that I could see your m.v. values might be at fault here is through effects of temperature on your ammo.
1) ammunition / ambient temperature: is it possible that your muzzle velocity was recorded at a lower temperature? if you record a muzzle velocity at low ammo temps, on a warm day you will shoot over what your colder-ammo m.v. might lead you to believe. i'm not familiar with too many calculators, as I calculate ammo/temp curves by hand before going to the range, but is it possible the values you entered into your calculator didn't account for temperature variations? Both ammo and ambient can make a big difference, and would be the first place to double check. For example, if you recorded 2850 at 60*F ambient, and 60*F ammo, then shot at 90*F ambient, and 110*F ammo (from sitting in the sunlight, for example) and didn't correct for it, you gonna go sailing way over. A warmed-up chamber is another possibility. The slope of the velocity curve increases as ammo temperature increases, so a small increase in temp can make a bigger-than-expected difference in m.v.
Assuming that your MV is properly recorded and temperature-adjusted, there are a couple realistic possibilities given the list of environmentals you posted:
2) atmospheric pressure: I noticed in your list of environmental data you listed an altitude. If your program uses a generic barometric pressure (an assumed pressure for a given altitude without regard for the real, actual, measured pressure), this would more than account for the differences you noticed. On ballistics tables that are corrected for pressure, at increasing distances a 1.0 in Hg can make a surprising difference in elevation. A lower pressure than the solver uses can change the trajectory, even with consistent m.v.
3) any crosswind-induced aerodynamic jump and D.o.F. dependent vertical coriolis might be adding some variance to this vertical dispersion, although without knowing more details about your shooting latitude and wind dynamics, it's impossible to say whether it will add that much. The math says that it is conceivable that those two could combine to account for a miss like that, assuming everything else is correct. I'm dubious on this, though, because that would require a unique set of circumstances.
4) tailwind can make you impact high when everything else is corrected for. Crosswind correction tables usually have a horizontal correction, but rarely include vertical corrections. A wind that is "no-value" for horizontal correction is definitely a "value" for vertical correction.
Varying m.v., wind direction, wind speed, latitude, direction of fire, incorrect station pressure are all possibilities that could aid this miss.
The "garbage in - garbage out" as noted above can lead people to lose faith in their ballistic solvers when the solvers are only computing with what they're given. Projectile ballistics is fairly straightforward, so the odds suggest a breakdown in the data input somewhere.
Holy Smokes, sorry for the essay, lol, just some possibilities to consider...