
24 August 2000 Original : ENGLISH Held at the Palais des Nations , Geneva , on Thursday , 24 August 2000 , at 10.10 a. m. President : Mr. Celso Amorim ( Brazil ) The PRESIDENT : I declare open the 857th plenary meeting of the Conference . Distinguished delegates , we have learned with deep sorrow the tragic death of the crew members of the Russian nuclear submarine Kursk . I am sure that you all join me in extending our deep sympathy and condolences to the delegation of the Russian Federation on this sad occasion . I would kindly request our Russian colleague to convey these sentiments to his Government and to the bereaved families , as well as to the whole Russian people . I should like to extend a warm welcome , on behalf of all of us , to the new representative of Romania , Ambassador Anda-Cristina Filip and assure her of our full cooperation and support . There is no speaker inscribed on my list for today . Does any delegation wish to take the floor at this stage ? Japan , you have the floor , sir . Mr. NORBURU ( Japan ) : With your indulgence , Mr. President , I should like to take this opportunity to mention briefly how much our delegation appreciates all the efforts being made by our Brazilian President to reach an agreement on the programme of work for the Conference on Disarmament . At the same time , we must also express our sincere recognition of his predecessors , whose efforts were also most worthy of note . Ambassador Amorim has already eloquently demonstrated how far a President can push all delegations forward in seeking a solution to the apparently impossible problem faced by the Conference on Disarmament . Ambassador Amorim has been conducting this task with perseverance , wisdom and diplomatic skills which my delegation highly esteems , and his work will stand as a textbook case of good chairmanship . What Ambassador Amorim has been able to achieve so far is remarkable , and we must all be very grateful that he intends to continue working until the last moment . Mr. President , it may be easy for people like us who are constantly exposed to the difficulties of international relations to understand why we have not yet been able to make progress in the Conference on Disarmament . This may not , however , hold true for the rest of society outside our diplomatic realm , who are diligently watching us and expecting real outcomes from us . This is reason enough for us not to abandon the possibility of agreeing on a programme of work , even at this late stage of this year 's session of the Conference on Disarmament . We must carry on with the work this week and during the remaining four weeks of this session . Mr. President , many delegations , including mine , consider extremely important all the efforts being made to accomplish progress in nuclear disarmament as the pivotal foreign policy objective , be it FMCT or a general discussion on nuclear disarmament . Over the last two years we have experienced an uncomfortable ambience of uncertainty in the Conference on Disarmament , but my delegation takes some solace from the fact that under you , Mr. President , we are still trying to be upbeat in our efforts to bring an end to this troubling reality . The PRESIDENT : I thank very much the representative of Japan . I am really moved by his words and encouraged to try to come to an agreement in this which is the last leg of my presidency . Is there any other delegation which wants to take the floor ? That does not seem to be the case . As you are aware , during the last few days , I have intensified consultations aimed at promoting consensus on the Programme of Work of the Conference on the basis of the ideas which I presented to all of you . I am encouraged by the fact that all delegations considered those ideas as a basis for further intensified consultations . I take the point made yesterday by several distinguished ambassadors that , at this stage , a basis for further intensified consultations is not good enough . I shall revert to this item later . I convened informal open-ended consultations yesterday with the purpose of ascertaining whether further progress can be made on a consensus decision on the Programme of Work . I was pleased to see that there was wide support from a broad cross-section of nations from different regions , different geopolitical situations , to my efforts , and I was also pleased to see the readiness displayed by all delegations to work towards compromise . Therefore , as I announced yesterday in the presidential consultations , it is my intention to suspend this plenary meeting and to convene in 10 minutes an informal open-ended consultation to discuss the ideas I have been working on . But before doing so , if you allow me a lighter note , I will mention to you that a friend of mine , who is actually our Ambassador in South Africa , recently gave me an old book called “ Legends of the United Nations ” . It was a collection by I believe a British author , Frances Frost , of legends of almost all the nations that were then comprising the United Nations written just after the Charter was approved in San Francisco . One of the legends that came across to me , which I think is especially significant to what we are living today ( and I will not mention the country from where the legend is in order not to be misinterpreted in my purpose in mentioning the legend ) . It goes more or less as follows : Once upon a time there was a king and a princess , and the king wanted the princess - a very beautiful princess - to get married , but the condition was that the suitor should bring a blue rose . Well , a blue rose does not exist . So there were several suitors , merchants , warriors and others , and they tried different solutions . One brought a beautiful crystal ball with a blue rose inscribed in it . Another one tried a silk rose . Another one tried just to dye , to use a blue dye in a white rose , so that also he could be accepted . But of course none of these tricks was accepted . But in the end there was another one who came with a white rose . He just plucked a white rose and brought it to the palace . The king and the princess considered the suitor and thought that he was a worthy gentleman and that the marriage could be a good one , so the king and the princess , to the astonishment of all those who were present , said : “ Well , here we have a blue rose ” . And they lived happily ever after . The meeting was suspended at 10.20 a. m. and resumed at 12.15 p. m. The PRESIDENT : We resume our formal meeting . We have just failed in approving a Programme of Work for the CD . There is nothing extraordinary about this . This has actually been the pattern for several months and years . Failure is apparently now part of our routine . We all have to reflect on the causes of it and how to overcome it . I do not think this is the appropriate time to draw lessons . Certainly , in my case , any analysis that I would try now would be tinged with a sense of personal frustration and emotions are not good counsellors for rational thinking . I may come back to that sometime in the future from the bench of Brazil . I do not need to explain either the gist of my efforts , how I tried to explore ambiguities in a positive way , how I tried to test the limits of the possible . My text will speak for itself , with its possible merits and obvious shortcomings . I am asking the secretariat to circulate it as a CD document , not because I am under any illusion that what was considered as a basis in the last days will still be a basis in four or five months ' time , but I thought in any case it would be useful to have that text as part of our records to show the general direction of the efforts we made collectively . At least it will demonstrate we did not give up easily . As to the future of the CD , it is under great doubt . The CD is a tool , and a tool that is not used gets rusted . Will it be a tragedy if , as some have already even mentioned here , the CD disappears ? I honestly do not know . Whatever will be deemed collectively indispensable by those who detain the power of destruction and annihilation will be done bilaterally , trilaterally , plurilaterally . But for those of us who rely on multilateralism , on the power of rational persuasion , and do not dispose in the same proportion - either because they cannot or do not want to have the force of arms , actual or potential - there will be a great loss . The system of world governance , if I may use that word in a vital area such as security , will be tremendously impoverished . I hope it is not too late to prevent that from happening . There is a positive side to those efforts that we all undertook , despite the fact that they did not succeed : the way we worked together , trying to look for reasons to be optimists in the midst of so many factors is encouraging . Clearly - and this was the case yesterday and today in the informal meetings - I received from a cross-section of the membership great support not only for my efforts but also for my proposal as a basis for a consensus . And even from the others , who could not at least explicitly join these expressions , I received loyal , faithful support , and I am glad that they were able to agree that my non-paper was a basis for further consultations . This engagement , which existed all along , shows that cynicism and unreasoned pessimism have not , or at least not yet , taken over the CD . I would like in this connection to quote from Amartya Sen , the famous Nobel Prize winner 's recent essay in the New York Review of Books : “ Unreasoned pessimism masquerading as composure based on realism and common sense can serve to ` justify ' disastrous inaction and an abdication of public responsibility ” . Let us not succumb to it . Finally , I wish to express once again my sincere appreciation for the invaluable support I received from Group Coordinators , as well as all other colleagues and their respective delegations , through these actually two months of presidency . I am also grateful to the Secretary-General of the CD , Mr. Petrovsky , and his deputy , Mr. Bensmail , for the way in which ( The President ) they put at my disposal their vast experience and expertise . I also want to thank the staff of the CD , as well as the interpreters . Finally , I am deeply indebted to my collaborators for their hard work and advice and , more importantly , the optimism they shared with me in the course of the Brazilian presidency of the CD . The Russian Federation has asked for the floor . Mr. SIDOROV ( Russian Federation ) ( translated from Russian ) : Thank you , Mr. President . I have asked for the floor to thank you for your words of condolence on the occasion of the tragedy that struck the Russian nuclear submarine Kursk . Your condolences will be conveyed to the Russian Government and to the families of the crew members . The PRESIDENT : Thank you . No other requests for the floor ? The next plenary meeting of the Conference will be held on Thursday , 31 August 2000 , at 10 a. m. The meeting rose at 12.25 p. m. 