The way to solve all of the velocity complications is to use G7 BC's. With G7 BC's, there is practically no variation with velocity and you can use one BC without consideration to what velocity it's valid for.
What if a 6.5WSM is launching a 140VLD at 3500fps(beyond your average velocity)?
Shortly beyond 200 yards that bullet will fall below 3000 fps, and be in the window that the average BC is calculated for. The bullet will spend most of it's long range flight between 3000 and 1500 fps, which is why that window was chosen.
Having a common velocity window also allows 'apples-to-apples' comparisons of the BC's between different bullets. If each bullet's BC were advertised for different speeds, you wouldn't know which is really better. This is why our approach of making BC's based on an average velocity (that's representative of long range flight) makes us compare less favorably to some of the competition. If others base their BC's on high velocity only, it will yield a higher BC, but that BC will not be representative of the bullets actual performance over long range.
The fact that you need to be aware of and account for velocity with BC is a problem with the G1 standard that we've always used to reference BC's to. There are all kinds of ways to deal with the velocity dependence of BC's like defining it in multiple segments, or giving an average value but the best way is to use a better standard. You shouldn't have to worry about velocity dependence, and the G7 allows you to ignore it and generate more accurate trajectories, and make more meaningful comparisons between different bullets.
JBM works how a ballistics program should work, the problem is that we give it G1 BC's, and that's not really the right way to use it for long range bullets.
The classic G1 BC is referenced to the G1 standard projectile which is a blunt nosed, flat based bullet. When you enter a G1 BC into a ballistics program, the program applies the drag curve for the G1 projectile, which is much different than the drag curve for a typical modern long range bullet. That is why the BC changes with velocity: because the modern pointy boat-tail bullet compares differently to the G1 standard projectile at different velocities.
When you tell the program you're giving it a G7 BC, it uses the drag curve for a pointy boat-tail bullet which is the same shape as our bullets. Since the drag curve of the G7 standard projectile is the same as our bullets, the G7 BC is constant for all speeds.
When I say 'drag curve', I'm referring to how the bullets drag coefficient changes with velocity. This is similar to the 'retard' coefficient often referred to. The shape of a bullets drag curve depends on the shape of the actual bullet. Bullets of similar external shape will have similar drag curves, and will have drag coefficients that compare equally at all speeds.
What you cannot do is enter a G1 BC and tell the program it's a G7 BC. Doing so will produce meaningless results. You have to give it a G7 BC which is numerically lower than a G1 BC.
I'm working on a resource that will bring the transition to G7 BC's closer to reality. In the mean time, I can provide G7 BC's for any Berger bullets on request. You can use them to calculate trajectories in JBM, or any other software that accepts BC's referenced to the G7 standard.
Advertised BC's (G1 or G7) need to be corrected for standard atmospheric conditions or they're useless. Ballistics programs apply the corrections based on how different your conditions are from standard conditions. I believe all companies correct their BC's to standard conditions, it should go without saying.