do_shortcode doesn’t work on some pages

global $options;$fields;$options2;$options3;$symbols;

That is the same as:

global $options;
$fields;
$options2;
$options3;
$symbols;

You’ve declared options as a global, but the other variables are just stated, they’re doing nothing, those lines might as well not be there.

Next we have:

$fields = get_post_meta($post->ID, 'mod1', true);

But you’re not checking if it’s an error value.

if (isset( $fields['miles'])){
                            ##### New ##########
                            //number_format($fields['miles'],0,'.','.')
                            echo number_format($fields['miles'],0,'.',',').' '.$options['milestext'];
                            ##### End ##########
                            }else {  echo ''; }

So the reason you are getting nothing, is because the miles field is not set. So it prints ”, aka nothing. Try replacing the ” with ‘error’ and you’ll see ‘error’ printed.

Also finally, short codes are intended for content. Instead you’re calling the short code indirectly, and outside of the loop.

The short code may make references to the current post, and you would be better off calling the actual function the short code is bound to instead of using do_shortcode