
Letter dated 23 May 2000 from the Permanent Representative of Iraq to the United Nations addressed to the Secretary-General On instructions from my Government , I have the honour to transmit to you herewith a letter dated 22 May 2000 from Mr. Tariq Aziz , Deputy Prime Minister and Acting Minister for Foreign Affairs of Iraq . The Minister calls attention to the large-scale military action launched by the Turkish armed forces against northern Iraq on 8 May 2000 , and he urges the United Nations to meet its responsibility , as stipulated in the Charter , to prevent aggression and intimidation of the kind to which Iraq is being subjected . I should be grateful if you would have the present letter and its annex circulated as a document of the Security Council . ( Signed ) Saeed H. Hasan Ambassador Permanent Representative Annex to the letter dated 23 May 2000 from the Permanent Representative of Iraq to the United Nations addressed to the Secretary-General Further to the letter dated 26 April 1999 addressed to you by the Minister for Foreign Affairs of Iraq ( S/2000/353 , annex ) , I should like to call your attention to the fact that on 8 May 2000 some 5,000 members of the Turkish armed forces supported by fighter aircraft and helicopters carried out a fresh military action in the Kani Masi sector in northern Iraq . This act of aggression resulted in serious losses , in terms of lives and property , to Iraqi citizens belonging to our Kurdish people in the area , to say nothing of the damage done to public property . This act of aggression by Turkey is the latest in a series of recurring attacks by its forces against Iraq 's territory , and it coincides with the hostile military actions being perpetrated against the country on a daily basis by the United States of America and the United Kingdom . The ongoing series of hostile operations and the flagrant violations of Iraq 's territory and airspace that are being committed by the Turkish armed forces only confirm Iraq 's repeated warnings against the consequences of the duplicitous policy being pursued by Turkey vis-à-vis the anomalous situation in northern Iraq and against its participation in perpetuating that situation for the implementation of the United States and British scheme to use its territory as a base from which to maintain the so-called no-flight zones in northern and southern Iraq and prevent the restoration of legitimate authority there . In condemning the renewed Turkish aggression against Iraqi territory in the strongest terms , the Government of Iraq calls upon the Turkish Government to withdraw its invading forces from Iraqi territory . It reserves in full its right to determine a time and a place to respond to this bellicose act , and it affirms the right of the Republic of Iraq , in accordance with the Charter of the United Nations and international law , to ensure that Turkey bears full international responsibility for the consequences of its recurring aggression , its violations of Iraq 's sovereignty and its exposure of Iraq 's security and territorial integrity to the gravest risks . As I express the hope that the United Nations will fulfil its responsibilities as stipulated in the Charter and will halt the constant intimidation and aggression to which my country is being subjected , I ask you to do your utmost to urge the Turkish Government to comply with the provisions of the Charter of the United Nations and the norms of international law by withdrawing its armed forces from Iraq 's territory forthwith . ( Signed ) Tariq Aziz Deputy Prime Minister Acting Minister for Foreign Affairs 