A judge criticised a settlement agreement between the Serious Fraud Office (SFO) and defence giant BAE Systems as he fined the company £500,000 yesterday.
The penalty was awarded against the firm for failing to maintain proper records of payments to an adviser in Tanzania and followed a controversial plea bargain at the end of six years of investigations by the SFO.
It was announced in February that a deal had been struck between prosecutors and the company to halt any further investigations, provoking anger by those who wanted to see the defence giant held to account in court over bribery allegations.
Judge Mr Justice Bean said: "I am surprised to find a prosecutor granting a blanket indemnity for all offences committed in the past, whether disclosed or otherwise."
BAE later issued a statement saying the decision draws a line under "this historical matter".