I made the following change and this seems to have fixed the problem. Around line 91 I changed

PHP Code:
// TVA_INTRACOM REPLACE BEGIN  - edited by brent
}
}
$calculated_tax zen_calculate_tax($order->info['shipping_cost'], $shipping_tax);
if(
$tva_tax){
$order->info['tax'] += $calculated_tax;
$order->info['tax_groups']["$shipping_tax_description"] += $calculated_tax;
$order->info['total'] += $calculated_tax;
}
          if (
DISPLAY_PRICE_WITH_TAX == 'true'$order->info['shipping_cost'] += zen_calculate_tax($order->info['shipping_cost'], $shipping_tax);
//} // if ($GLOBALS[$module]->tax_class > 0)
// TVA_INTRACOM REPLACE END 
to

PHP Code:
// TVA_INTRACOM REPLACE BEGIN
}
}
$calculated_tax zen_calculate_tax($order->info['shipping_cost'], $shipping_tax);
if(
$tva_tax){
$order->info['shipping_tax'] += $calculated_tax//added to sort out group discount VAT bug
$order->info['tax'] += $calculated_tax;
$order->info['tax_groups']["$shipping_tax_description"] += $calculated_tax;
$order->info['total'] += $calculated_tax;
}
          if (
DISPLAY_PRICE_WITH_TAX == 'true'$order->info['shipping_cost'] += zen_calculate_tax($order->info['shipping_cost'], $shipping_tax);
//} // if ($GLOBALS[$module]->tax_class > 0)
// TVA_INTRACOM REPLACE END 
I would also like to know if the following code which was in the original also needs porting across:
PHP Code:
          $_SESSION['shipping_tax_description'] =  $shipping_tax_description;
          
$_SESSION['shipping_tax_amount'] =  $shipping_tax_amount
Once again I stress I have no idea what I am doing and this is all trial and error and following advice from various threads.

Hopefully DrByte or Wilt will be along to tell me I haven't broken something or opened a gaping security hole.

Keeps fingers crossed that a boffin will be along to check my work.