It is a TDC computing bug.
I've tried numerous techniques to fix this issue. I assure you, the dev team knows by now as this has been brought up fairly often here.
WORKAROUND:
I tried using the spread dial, but it varied too much depending on target speed and AoB.
ADD 2.5 KNOTS TO YOUR TARGET'S SPEED IN MANUAL. SEND A RANGE UPDATE BEFORE FIRING EACH TUBE and preferrably AoB update right before range update. Hell, if you can't stadimeter it, just hit the range update button.
Those of you in easy mode won't be able to do that unfortunately.

Motivational? Perhaps. But it works with regularity. Don't be afraid to use a small spread either boys and girls. Give it a try!