A judge has criticised a settlement agreement between the Serious Fraud Office (SFO) and defence giant BAE Systems as he fined the company £500,000.
The penalty was given to the firm for failing to keep 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, provoking anger by those who wanted it held to account in court over bribery allegations.
Under the deal, BAE was to pay 400 million US dollars (£260 million) to America's Department of Justice and plead guilty to one charge of conspiring to make false statements to the US government relating to its operations and business dealings in the Czech Republic, Hungary and Saudi Arabia.
It would also pay £30 million in the UK for failing to keep "reasonably accurate" accounting records over activities in Tanzania - the SFO's largest settlement with a UK company.
Southwark Crown Court heard that payments totalling about 12.4 million US dollars (£7.7 million) were made to two companies controlled by Tanzania-based businessman Shailesh Vithlani between January 2000 and December 2005.
The court heard BAE believed Mr Vithlani was probably given the money for helping it to win a 40 million dollar (£25.8 million) contract to provide a radar system for Dar-es-Salaam international airport in Tanzania.
BAE pleaded guilty to one count of breaching its duty to keep accounting records, contrary to section 221 of the Companies Act 1985.
Judge Mr Justice Bean criticised the settlement agreement, saying it was "loosely and perhaps hastily drafted". He highlighted paragraph eight, whereby the SFO agreed on "no further investigation or prosecutions of any member of the BAE Systems Group for any conduct preceding 5 February 2010".
The judge said: "But I am surprised to find a prosecutor granting a blanket indemnity for all offences committed in the past, whether disclosed or otherwise."