
Industrial Development Board Twenty-fifth session Vienna , 15-16 May 2002 Item 4 of the provisional agenda Report by the Director-General The financial situation as at 31 March 2002 can be summarized in the following major points : ( a ) The regular budget is being implemented with an initial allocation of 97 per cent of the 2002 appropriations . Expenditure for the first quarter amounted to 26.5 per cent ; ( b ) The operational budget recorded a surplus of €1.6 million during the first quarter of 2002 ; therefore , the level of the operational budget reserve increased from €3.3 million ( $2.98 million ) as at 1 January 2002 to €4.9 million as at 31 March 2002 ; ( c ) The level of regular budget cash resources ( including the Working Capital Fund and the unencumbered balances of appropriations ) was €34.7 million . In comparison , the cash balance as at 31 March 2001 and 2000 was €29.8 million and €24.3 million , respectively ; ( d ) The collection rate of 2002 assessed contributions was 47.2 per cent and was favourable compared to the 2001 and 2000 rates of 35.7 and 35.9 per cent , respectively ; ( e ) The collection rate of prior years ' arrears , as compared to the current year 's assessments , was 2.3 per cent . The rates as at 31 March 2001 and 2000 , as compared to the assessments of those years , were 12.4 and 2.7 per cent , respectively ; ( f ) Outstanding contributions amounted to €144.9 million ( including arrears of €69.3 million by the United States of America , and €2.1 million by the former Yugoslavia ) ( annex I ) . The outstanding amounts as at 31 March 2001 and 2000 were €152.7 million and €158.6 million , respectively ( for comparison revalued at the December 2001 United Nations rate of exchange , $1 = €1.123 , in accordance with GC.9/Dec.15 ) ; ( g ) The Working Capital Fund is at the level of €7,423,030 ( $6,610,000 converted at the December rate of $1= €1.123 ) . However , an amount of €259,212 was outstanding as at 31 March 2002 ; ( h ) Pursuant to General Conference decision GC.9/Dec.12 , Ukraine and UNIDO signed a payment plan on 25 March 2002 , and the first instalment under the plan was received on 28 December 2001. Consultations are continuously taking place with a number of Member States regarding settlement of their arrears through payment plans ; ( i ) In compliance with General Conference decision GC.9/Dec.10 , unencumbered balances of appropriations , income from new Member States and interest income in excess of budgetary estimates ( total amount €7,195,414 ) are being allocated as requested by Member States ( annex II ) ; ( j ) Recent actions and developments with respect to the transition to a single currency system , as well as issues encountered , are provided as background information in a conference room paper ( IDB.25/CRP.3 ) . Regular and operational budgets , 2002-2003 Regular budget implementation of the approved programme and budgets , 2002-2003 , commenced as planned . In view of the expected collection rate of assessed contributions of some 97 per cent during the year ( both for current and prior years ) , as well as the healthy cash position of the Organization at the beginning of 2002 , an average release of 97 per cent of the appropriations for 2002 under the regular budget , including UNIDO 's share of Buildings Management Services , was approved . This included 100 per cent release for staff costs , the Regular Programme of Technical Cooperation , field operating costs and information technology ; and an average of 86.3 per cent under consultants , travel , meetings and operating costs . The pattern compares favourably with the start of the 2000-2001 biennium , whereby after the first three months of 2000 only 90 per cent of appropriations were released . The Buildings Management gross appropriation was released at the level of 96 per cent , reflecting the actual higher-than-budgeted vacancy rate under established posts . Operating costs were fully released . Expenditure during the period 1 January to 31 March 2002 amounted to €18.1 million under the regular budget . This amount corresponds to 26.5 per cent of the total appropriation for 2002 and is comparable with the preceding biennium . The current value represents a smooth budget implementation with a lesser risk of delaying or non-implementing approved programmes . The initial allocation under the operational budget was set at 95 per cent of the approved estimate . With a $32 million delivery of technical cooperation activities as of 31 March 2002 ( delivery as of 31 March 2001 for the same period was $27 million ) , income for the first quarter amounted to €4.1 million ( $3.6 million ) for support cost reimbursement . Expenditure for the same period amounted to €2.5 million , leading to a surplus of €1.6 million during the first quarter of 2002. Therefore , the level of the operational budget reserve increased from €3.3 million ( $2.98 million ) as at 1 January 2002 to €4.9 million as at 31 March 2002. Regular and operational budgets , 2000-2001 The accounts for the biennium 2000-2001 have been submitted for audit to the External Auditor . In accordance with legislative mandates , the report of the External Auditor , financial performance report and programme performance report for the biennium 2000-2001 will be submitted to the twenty-sixth session of the Board through the Programme and Budget Committee . The overall implementation of the regular budget for the last biennium was 96.4 per cent , resulting in a provisional surplus of $4,248,200 , which represents 3.6 per cent of the restated appropriations after applying the adjustment formula shown in the GC.8/Dec.17 to take account of the average exchange rate actually experienced during the biennium . This implementation compares favourably with the last four bienniums ( 1998-1999 : 91.7 per cent ; 1996-1997 : 80.7 per cent ; 1994-1995 : 88.3 per cent ; 1992-1993 : 94.5 per cent ) . The higher implementation of the biennium 2000-2001 is due to the favourable cash position of the Organization , which , inter alia , has resulted from a better collection rate of both current and prior years ' assessed contributions . The programme support cost income of the operational budget for the biennium amounted to $18.65 million , with expenditures of $17.29 million . As a result , the operational budget recorded a surplus of $1.36 million . The reserve level thus increased from $1.62 million on 1 January 2000 to $2.98 million as at 31 December 2001. Technical cooperation delivery during 2001 amounted to $84.7 million . However , should technical services at the programme and project levels of United Nations Development Programme and Industrial Development Decade for Africa supplementary activities be included , the volume of technical services provided by UNIDO during the year totalled more than $90 million . Collections A total of 27 Member States , including two least developed countries ( LDCs ) , have made full payments and 20 Member States , including five LDCs , have made partial payments of their assessed contributions for the year 2002. The collections in the period from January to March 2002 , broken down by Lists of States , are shown in table 1. Table 1. Collections , January-March 2002 ( In millions of euros ) * As contained in document GC.9/16 . Outstanding contributions The detailed status of assessed contributions outstanding as at 31 March 2002 is contained in annex I to the present document . The scale of assessment and outstanding contributions as at 31 March 2002 , broken down by Lists of States , are shown in table 2. Table 2. Scale of assessment and outstanding contributions , as at 31 March 2002 * As contained in document GC.9/16 . On 6 December 2000 , the Federal Republic of Yugoslavia deposited the instrument of accession to the Constitution of UNIDO and thus became a new Member State . As the former Yugoslavia has ceased to exist , a decision will have to be taken with regard to the treatment of the arrears of the former Yugoslavia , amounting to €2,084,146 . The issue is among the items on the agenda of the United Nations General Assembly and document A/56/767 of 9 January 2002 contains details . The Secretariat is closely following further developments and any decision to be taken by the General Assembly in this respect will be conveyed to the UNIDO governing bodies . As indicated in annex I to the present document and as summarized in table 3 , the voting rights of 61 Member States had been suspended as at 31 March 2002 in accordance with Article 5.2 of the Constitution and financial regulation 5.5(b ) . Table 3. Suspension of voting rights , as at 31 March In order to restore their voting rights for the remainder of 2002 , these Member States must pay their full contributions for 1999 and prior years , including advances to the Working Capital Fund , as well as a partial contribution for 2000. The minimum total amount that would have to be paid by these Member States is €22,259,710 . Information was provided in document GC.9/10 of 22 October 2001 on the implementation of the measures recommended by the open-ended discussion group on timely payment of assessed contributions . Since that time one payment plan has been concluded ( with Ukraine , as approved by the General Conference in decision GC.9/Dec.12 ) , and the first instalment under the plan has been received . Informal consultations are continuously taking place with a number of Member States regarding settlement of their arrears through payment plans . As reported in document GC.9/10 , the United States of America owes €69,264,731 ( equivalent to $61,678,302 ) , against assessed contributions for the years 1994-1996 and €953,547 ( $849,107 ) against the Tax Reimbursement Agreement—a total amount of €70,218,278 . There has been no further development on the collection of this amount , although the Secretariat has again followed up this year with the Permanent Representative of the United States of America to the United Nations ( Vienna ) for the settlement of the arrears . PRIATIONS , INCOME FROM NEW MEMBER STATES AND INTEREST INCOME IN EXCESS OF BUDGETARY ESTIMATES Detailed information on the unencumbered balances of appropriations , income from new Member States and interest income in excess of budgetary estimates was provided in document GC.9/10 . The following amounts in euros were due for distribution to eligible Member States ( i. e. those that had fully paid their assessed contributions for the respective biennium ) in accordance with financial regulations 4.2(b ) and ( c ) : While adopting the decision on the scale of assessments ( GC.9/Dec.10 ) , the General Conference strongly encouraged Member States to consider renouncing voluntarily their shares of the balances and income referred to above , for the regular budget and/or for technical cooperation activities of UNIDO , and requested the Director-General to report to the Board on the amounts renounced and purposes specified by Member States . From early January 2002 , the Secretariat solicited from Member States their intention as to the utilization of their respective share and requested replies to be returned by 28 February 2002. Responses received as at 31 March 2002 are shown in annex II and are summarized below . As reported in various documents , including GC.9/10 ( chap . VII ) , UNIDO gradually introduced a new computerized financial performance control system ( FPCS ) during 2000-2001 . After one year of parallel operation of the previous mainframe system and FPCS , UNIDO has been using FPCS as the sole system for all accounting transactions since 1 January 2002. The parallel operation was helpful in fine-tuning the application and adjusting procedures to make best use of the features offered by the new system . The switch-over coincided with the introduction of the euro as the base currency for UNIDO 's accounts . Most of the remaining issues with the new system are related to the requirement of continuing the accounting for technical cooperation activities in United States dollars , whereas the base currency is now the euro . Work will also continue in the area of designing various reports based on transaction data captured by the new system as well as linking it to existing executive management systems . In addition , the application will be rolled out to all staff involved in financial operations for capturing data at the point of origin , and enabling staff to have on-line information on the status of activities for which they are responsible . In accordance with General Conference decision GC.8/Dec.16 , a single currency system of assessment based on the euro became effective with the current fiscal period 2002-2003 . Since the adoption of that decision in 1999 , the Secretariat has kept Member States informed of steps taken for the introduction of the single currency system . Recent action and developments with respect to the transition , as well as issues encountered , are provided as background information in a conference room paper ( IDB.25/CRP.3 ) , and a document on the subject will be issued to the Programme and Budget Committee at its forthcoming eighteenth session . Among the steps taken in compliance with decision GC.8/Dec.16 was the amendment of the concomitant Financial Regulations of UNIDO . A conference room paper containing the updated regulations will be issued under the symbol IDB.25/CRP.4 . The Industrial Development Board may wish to consider adopting the following draft decision : “ The Industrial Development Board : “ ( a ) Takes note of the information provided in document IDB.25/6 ; “ ( b ) Also takes note of the information on the implementation of General Conference decision GC.9/Dec.10 ( IDB.25/6 , chap . VI ) ; “ ( c ) Urges those Member States that have not yet paid their assessed contributions , including advances to the Working Capital Fund and prior years ' arrears , to do so without delay . ” Annex I As at 31 March 2002 ( in Euros ) Notes : ( p ) Partial payment . Voting rights of 61 Member States have been suspended in accordance with Article 5.2 of the Constitution of UNIDO . Four Members of the Industrial Development Board are without voting rights : Belarus , Côte d'Ivoire , Guatemala and Libyan Arab Jamahiriya . The General Conference has approved a payment plan for Ukraine to settle its arrears and its voting right was regained ( GC.9/Dec.12 ) . Outstanding contribution to be resolved following decision by the United Nations General Assembly . Member State of UNIDO until 31 December 1996. Since 31 March 2002 , full or partial payments were received from the following Member States : Belgium , Côte d'Ivoire , Cuba , Cyprus , Denmark , Ecuador , Guatemala , Mexico and Oman ( an update will be issued as a conference room paper ) . Annex II STATUS OF UNENCUMBERED BALANCES OF APPROPRIATIONS , INCOME FROM NEW MEMBER STATES AND INTEREST INCOME IN EXCESS OF BUDGETARY ESTIMATES ( GC.9/Dec.10 ) As at 31 March 2002 ( in Euros ) Provides information on the financial situation of UNIDO , including arrears , as at 31 March 2002. Also refers to the initial experience of the Organization in the transition to a single currency system of assessment . A conference room paper will be issued during the session to provide updated information on the status of assessed contributions , voting rights and disposition of unencumbered balances of appropriations , income from new Member States and interest income in excess of budgetary estimates . For reasons of economy , this document has been printed in a limited number . Delegates are kindly requested to bring their copies of documents to meetings . 