A hundred and fifty year old problem: the standard drag function is not your bullet
Ballisticians have been chasing more accurate trajectory prediction for a hundred and fifty years. Once the bullet leaves the muzzle its behavior is set mainly by its drag function, that is, by how deceleration varies with velocity. The effects of the atmosphere and of muzzle velocity have been understood for a long time and both are easy to measure, and modern solvers also carry corrections for spin drift, muzzle jump and Coriolis.
Before Doppler radar could measure over long distances, the choice of drag functions was very limited. The best known are the G1, G2 ... G7, G8 family standardized by national proving grounds, and in small arms practice only G1 and G7 are used in any volume. G1 was long treated as the default standard truth for sporting bullets, and in recent years G7 has been promoted as the better alternative for modern low drag bullets.
It is worth noting that government agencies gave up the Gx tables about fifty years ago and switched to collecting drag data from real guns firing real ammunition with radar, from every type of tank down to every type of infantry rifle. Once the firing data was collected, the whole set went to the ballistic research organization, which reduced it to a firing table representing typical performance from a typical gun: an estimated muzzle velocity for each round, plus sight elevation, remaining velocity and wind drift at each range. What the firing table never shows is that behind every projectile sits a hidden drag function derived from the radar data, and that hidden function is what the ballistics organization actually used to compute the table.
Why the standard approach misses
The industry has long accepted a fact of life: long range prediction is about as accurate as the nominal muzzle velocity printed on factory ammunition or predicted by a handloading manual. At best those velocity predictions describe the average behavior of several different guns firing several lots of the same ammunition. More often they come from a single lot tested in a single gun. Shooters therefore generally understand that accurate long range prediction for their own gun and load starts with measuring their own muzzle velocity. Fortunately velocity is relatively easy to measure, and there is more than one way to do it.
The trouble is downstream. Prediction rests on a drag function and a ballistic coefficient, and recent testing has confirmed that the generally accepted G1 and G7 do not accurately represent real bullets, and that a bullet's long range behavior is significantly affected by the individual gun that fired it. The standard procedure assumes that G1 or G7 happens to describe the family our bullet belongs to, measures drag near the muzzle to fix a ballistic coefficient that identifies which curve in that family is ours, and then uses that near muzzle fit to predict behavior over the whole trajectory. After all these years nobody has found a perfect prediction, and once you verify with actual long range fire the results usually do not match.
Oehler quotes Todd Hodnett to sum it up: the bullet does not lie. The bullet only knows how to obey the laws of physics, and what it does is decided entirely by nature. We are the ones who get it wrong. We claim to understand and apply those laws, we make small errors in approximation and application, and the bullet is affected by small variations we did not notice or did not measure well. If that is the case, then the thing to change is our prediction procedure, so that the prediction matches the behavior actually measured when my gun fires my bullet.
How to measure long range behavior: three routes and Oehler's choice
Traditional ballisticians think about long range behavior in terms of drag or velocity loss, and a plot of drag against velocity really is an excellent way to describe it. The problem is that drag is extremely hard to measure. To get drag or deceleration you first need velocity loss, and to get velocity loss you measure two velocities and subtract. Both velocities are very large compared with their difference, so a very small percentage error in either velocity measurement becomes a huge percentage error in the difference, which is the drag.
Doppler radar essentially outputs a signal proportional to bullet velocity, which is much closer to the drag or velocity loss a ballistician wants. Processed, the signal shows the frequency change as the bullet decelerates and therefore reflects drag reliably. It is an excellent system and the one proving grounds prefer. Its main drawback is cost: a Doppler radar that measures velocity near the muzzle is relatively cheap, but a system that can reliably track a rifle bullet for thousands of yards is very expensive. Doppler also delivers extremely detailed data at the price of heavy post-processing, and it is usually applied to only a few shots.
A second route is to check drop on a distant target. Measuring drop at long range is not easy. It is contaminated by errors of visual judgment, by wind, by range estimation and by the ever present uncertainty of aiming and holding. The method compares observed drop with predicted drop, then adjusts the ballistic coefficient or the muzzle velocity until predicted drop equals observed drop. That is what truing means, and the procedure has been shown to improve predictions significantly.
Whether to true the ballistic coefficient or the muzzle velocity has traditionally been left to the user. The industry broadly agrees on two points. First, at the range tested, truing velocity and truing ballistic coefficient give similar results. Second, you should true the variable whose data is most suspect.
Oehler System 88 takes a third route: measure muzzle velocity accurately first, then true only the ballistic coefficient. The author argues that this gives better predictions at all ranges, including the test range itself, because when muzzle velocity is itself a measured truth the remaining deviation can be attributed correctly to drag.
The key fact behind that route is that there is one long range parameter we can now measure accurately and reliably: the time of flight (TOF) to a distant target. Given muzzle velocity, the range to the target and the time of flight, you have effectively defined the bullet's long range behavior. Add a drag function and you can solve backwards for the ballistic coefficient that makes measured and predicted time of flight agree. The prediction is then calibrated at the distant target, and with that measured (or trued) ballistic coefficient you can interpolate accurately for the intermediate ranges. The successive approximation solver and the System 88 sensor layout are described more fully in the companion article "Extended Range Truing: Calibrating a Trajectory With Measured Time of Flight" Extended Range Truing: Calibrating a Trajectory With Measured Time of Flight.
The unexpected conclusion: the choice of drag function hardly matters
If you pick the test range near the generally accepted maximum effective range, where remaining velocity is about Mach 1.2, you have effectively trued over the most useful part of the trajectory. At that point it hardly matters which Gx drag function you use. Any of them can be given a ballistic coefficient that forces measured and predicted time of flight to agree at the test range. More to the point, you can use any of those drag functions to compute drop and wind drift at intermediate ranges, and the predictions usually agree with each other within 0.1 mil.
The range versus time curve makes the reason clear. The initial slope of the curve is muzzle velocity, the slope at any point is the velocity there, and the change in slope is drag or deceleration. Switching drag functions changes the shape of the curve only slightly. Given the same muzzle velocity, every curve leaves the origin with the same slope, forming a family of similar curves, and only one of them passes through the distant point actually observed in the test. That one carries the ballistic coefficient that gives correct predictions. A ballistic coefficient obtained this way reflects the accumulated effect of drag over a long distance, not drag at one particular velocity. Run the case again with a different drag function and the same muzzle velocity and time of flight, compare the two curves through that distant point, and you find they are nearly identical, with similar predictions of drop and wind drift.
Oehler admits this was a surprise during the development of System 88. The team naively expected that with enough data they could generate a custom drag function, or at least select the best standard one. Instead, once real firing data was collected and the prediction was forced to match measured long range truth, they could not tell the predictions from different drag functions apart. If you cannot tell them apart, how would you pick the perfect one? If G1 or G7 gives an equivalent prediction, and if even a perfect drag function would still have to be trued before use, what is the point of chasing a perfect drag function?
How to do it: from one supersonic step to several transonic steps
Truing over the usual supersonic range is straightforward, and that range covers most of the distances shooters actually use. The trouble starts when you want to measure time of flight at a range where the bullet is clearly subsonic. There the differences between accepted drag functions near the speed of sound become significant, and a predicted curve through the first range and time point will pass through the subsonic point only if you are extremely lucky. We are rarely that lucky.
The answer is a stepped ballistic coefficient. For years Sierra and others have published G1 ballistic coefficients stepped by velocity, which is itself an admission that G1 does not fit the bullet: real drag differs from the drag G1 predicts, so a stepped ballistic coefficient is used to reflect the misfit. There is nothing wrong with this, accuracy has been reasonable for years, and many ballistic programs support stepped ballistic coefficients. The difference is that the values Sierra publishes usually cover only the supersonic band, where the change in ballistic coefficient is relatively small, while Oehler's testing shows that the stepped format works just as well at longer ranges, as long as the steps are established from long range truing.
The practical workflow runs like this. The ballistic coefficient from the first test gives accurate predictions down to Mach 1.2, and the target velocity there is the lower bound of the first step. To extend the procedure further, run a second test at a range corresponding to clearly subsonic flight. Then, in a solver that supports stepped ballistic coefficients, enter the ballistic coefficient and velocity boundary from the first test and adjust the next step until predicted time of flight matches the observed time of flight at that test range. The resulting two step ballistic coefficient passes through both experimental points and predicts drop and wind drift from the muzzle to the subsonic target, usually within 0.1 mil.
One software requirement is easy to overlook. Oehler Ballistic Explorer version 6.6 and later accepts the boundaries between ballistic coefficients to a resolution of 10 fps. The Extended Range Truing program suggests boundaries based on the actual target ranges, and the velocities those ranges convert to are given with 10 fps resolution. To actually obtain the accuracy this truing procedure offers, the exterior ballistics program has to accept and correctly use boundaries expressed in 10 fps steps. Oehler states plainly that some programs do not handle this correctly.
A worked example, quality indicators, and an honest limit
Oehler explains the program output with a numerical example anyone can reproduce. The input is not live fire data but a perfect G7 bullet: 3000 fps muzzle velocity and C7 = 0.250. G7 predicts its velocity at 1000 yards to be near Mach 1.2, and the time of flight at that range is taken as 1.46433 seconds. At 1400 yards the time of flight is 2.49754 seconds and remaining velocity is near Mach 0.9. Fed with those numbers, the Extended Range Truing program suggests C1 = 0.497 down to 1420 fps, stepping down to 0.359 down to 1000 fps. Since no test was made below 1000 fps, the initial estimate of the ballistic coefficient is restored below that velocity. The plots show the curves inside 1000 yards overlapping completely with no visible difference, the true G7 and the stepped G1 curves staying together out to about 1500 yards, and the untrued G1 prediction, matched to drag only near the muzzle, clearly diverging. For zero elevation correction, stepped G1 and G7 agree out to 1500 yards, and wind drift agrees even beyond 1400 yards.
The result is that effective range extends from 1000 yards to beyond 1400 yards, provided the gun and load can demonstrate stability through the sonic transition, and the consistency of the ballistic coefficient measured at long range is exactly what indicates that stability. The curves diverge further out for a simple reason: testing stopped at 1400 yards, and beyond that the prediction still rests on an unverified drag function. The author stresses that we could freely adjust the ballistic coefficient below 1000 fps to make the curves agree perfectly, but nothing experimental would support it. To go further you have to add a more distant target: a third target at about 1800 yards, corresponding to about 900 fps. That target is hard to hit whether you shoot plywood or actual paper, the time of flight approaches 4 seconds, and a lot can go wrong in between. G7 gives 3.76020 seconds at that range. With that point added to the program, a ballistic coefficient of 0.756 applies between 1000 and 910 fps, and the zero correction agrees within 0.1 mil inside 1600 yards and within 0.27 mil inside 2000 yards. That largest error is equivalent to the effect of a 10 fps difference in muzzle velocity.
The operating screen of the program is simple. It is normally fed the average muzzle velocity and time of flight data collected by System 88, but it works equally well with single shot time of flight data, or with time of flight from a radar type system. It also allows the downstream data at each range to be collected on different days, at different muzzle velocities and under different atmospheric conditions. The shot by shot output of System 88 should not be ignored either. Shot by shot results first show the consistency (standard deviation) of muzzle velocity for that gun and load. The proof velocity measurement gives a solid indicator of the accuracy of the velocity measurement itself. And the observed ballistic coefficient is a direct measure of bullet performance over the tested range, with its standard deviation indicating both bullet performance and instrument precision.
Finally, the limit the method draws for itself. What users care about most is the prediction of elevation and wind drift. Truing on time of flight directly trues or verifies the prediction of time of flight, and with it the effect of bullet drag and deceleration. It does not directly verify the prediction of elevation and wind drift. Oehler's argument is that elevation and wind drift depend heavily on time, so if the time is right those predictions will be very accurate. Do first things first and true on measured time of flight. The overall conclusion is that measuring real time of flight against range points, and forcing the prediction to match them, matters far more than which drag function you choose. If the chosen drag function fits the bullet perfectly, the ballistic coefficient stays constant. If it fits well, the steps are gentle. If it fits poorly, the ballistic coefficient changes more, but predictions made with those stepped values are still quite accurate, because you started from real data taken with your own gun and your own bullet. As the original paper concludes, the bullet does not lie; it is you who has to listen.
