BAHIA COCOA REVIEW	19870226200101	Showers continued throughout the week in the Bahia cocoa zone, alleviating the drought since early January and improving prospects for the coming temporao, although normal humidity levels have not been restored, Comissaria Smith said in its weekly review.     The dry period means the temporao will be late this year.     Arrivals for the week ended February 22 were 155,221 bags of 60 kilos making a cumulative total for the season of 5.93 mln against 5.81 at the same stage last year. Again it seems that cocoa delivered earlier on consignment was included in the arrivals figures.     Comissaria Smith said there is still some doubt as to how much old crop cocoa is still available as harvesting has practically come to an end. With total Bahia crop estimates around 6.4 mln bags and sales standing at almost 6.2 mln there are a few hundred thousand bags still in the hands of farmers, middlemen, exporters and processors.     There are doubts as to how much of this cocoa would be fit for export as shippers are now experiencing dificulties in obtaining +Bahia superior+ certificates.     In view of the lower quality over recent weeks farmers have sold a good part of their cocoa held on consignment.     Comissaria Smith said spot bean prices rose to 340 to 350 cruzados per arroba of 15 kilos.     Bean shippers were reluctant to offer nearby shipment and only limited sales were booked for March shipment at 1,750 to 1,780 dlrs per tonne to ports to be named.     New crop sales were also light and all to open ports with June/July going at 1,850 and 1,880 dlrs and at 35 and 45 dlrs under New York july, Aug/Sept at 1,870, 1,875 and 1,880 dlrs per tonne FOB.     Routine sales of butter were made. March/April sold at 4,340, 4,345 and 4,350 dlrs.     April/May butter went at 2.27 times New York May, June/July at 4,400 and 4,415 dlrs, Aug/Sept at 4,351 to 4,450 dlrs and at 2.27 and 2.28 times New York Sept and Oct/Dec at 4,480 dlrs and 2.27 times New York Dec, Comissaria Smith said.     Destinations were the U.S., Covertible currency areas, Uruguay and open ports.     Cake sales were registered at 785 to 995 dlrs for March/April, 785 dlrs for May, 753 dlrs for Aug and 0.39 times New York Dec for Oct/Dec.     Buyers were the U.S., Argentina, Uruguay and convertible currency areas.     Liquor sales were limited with March/April selling at 2,325 and 2,380 dlrs, June/July at 2,375 dlrs and at 1.25 times New York July, Aug/Sept at 2,400 dlrs and at 1.25 times New York Sept and Oct/Dec at 1.25 times New York Dec, Comissaria Smith said.     Total Bahia sales are currently estimated at 6.13 mln bags against the 1986/87 crop and 1.06 mln bags against the 1987/88 crop.     Final figures for the period to February 28 are expected to be published by the Brazilian Cocoa Trade Commission after carnival which ends midday on February 27.  Reuter &#3;  
STANDARD OIL <SRD> TO FORM FINANCIAL UNIT	19870226200220	Standard Oil Co and BP North America Inc said they plan to form a venture to manage the money market borrowing and investment activities of both companies.     BP North America is a subsidiary of British Petroleum Co Plc <BP>, which also owns a 55 pct interest in Standard Oil.     The venture will be called BP/Standard Financial Trading and will be operated by Standard Oil under the oversight of a joint management committee.   Reuter &#3;  
COBANCO INC <CBCO> YEAR NET	19870226201859	Shr 34 cts vs 1.19 dlrs     Net 807,000 vs 2,858,000     Assets 510.2 mln vs 479.7 mln     Deposits 472.3 mln vs 440.3 mln     Loans 299.2 mln vs 327.2 mln     Note: 4th qtr not available. Year includes 1985 extraordinary gain from tax carry forward of 132,000 dlrs, or five cts per shr.  Reuter &#3;  
WORLD MARKET PRICE FOR UPLAND COTTON - USDA	19870226213846	The U.S. Agriculture Department announced the prevailing world market price, adjusted to U.S. quality and location, for Strict Low Middling, 1-1/16 inch upland cotton at 52.69 cts per lb, to be in effect through midnight March 5.     The adjusted world price is at average U.S. producing locations (near Lubbock, Texas) and will be further adjusted for other qualities and locations. The price will be used in determining First Handler Cotton Certificate payment rates.     Based on data for the week ended February 26, the adjusted world price for upland cotton is determined as follows, in cts per lb --  Northern European Price               66.32       Adjustments --  Average U.S. spot mkt location 10.42   SLM 1-1/16 inch cotton          1.80   Average U.S. location           0.53  Sum of adjustments              12.75  Adjusted world price            53.57  Reuter &#3;  
SUGAR QUOTA IMPORTS DETAILED -- USDA	19870226213854	The U.S. Agriculture Department said cumulative sugar imports from individual countries during the 1987 quota year, which began January 1, 1987 and ends December 31, 1987 were as follows, with quota allocations for the quota year in short tons, raw value --             CUMULATIVE     QUOTA 1987               IMPORTS     ALLOCATIONS  ARGENTINA        nil          39,130  AUSTRALIA        nil          75,530  BARBADOS         nil           7,500  BELIZE           nil          10,010  BOLIVIA          nil           7,500  BRAZIL           nil         131,950  CANADA           nil          18,876                            QUOTA 1987               IMPORTS     ALLOCATIONS  COLOMBIA         103          21,840  CONGO            nil           7,599  COSTA RICA       nil          17,583  IVORY COAST      nil           7,500  DOM REP        5,848         160,160  ECUADOR          nil          10,010  EL SALVADOR      nil          26,019.8  FIJI             nil          25,190  GABON            nil           7,500                            QUOTA 1987               IMPORTS     ALLOCATIONS  GUATEMALA        nil          43,680  GUYANA           nil          10,920  HAITI            nil           7,500  HONDURAS         nil          15,917.2  INDIA            nil           7,500  JAMAICA          nil          10,010  MADAGASCAR       nil           7,500  MALAWI           nil           9,,100                            QUOTA 1987                IMPORTS    ALLOCATIONS  MAURITIUS         nil         10,920  MEXICO             37          7,500  MOZAMBIQUE        nil         11,830  PANAMA            nil         26,390  PAPUA NEW GUINEA  nil          7,500  PARAGUAY          nil          7,500  PERU              nil         37,310  PHILIPPINES       nil        143,780  ST.CHRISTOPHER-  NEVIS             nil          7,500                           QUOTA 1987                 IMPORTS  ALLOCATIONS  SWAZILAND          nil         14,560  TAIWAN             nil         10,920  THAILAND           nil         12,740  TRINIDAD-TOBAGO    nil          7,500  URUGUAY            nil          7,500  ZIMBABWE           nil         10,920   Reuter &#3;  
GRAIN SHIPS LOADING AT PORTLAND	19870226213903	There were seven grain ships loading and six ships were waiting to load at Portland, according to the Portland Merchants Exchange.  Reuter &#3;  
IRAN ANNOUNCES END OF MAJOR OFFENSIVE IN GULF WAR	19870226214000	Iran announced tonight that its major offensive against Iraq in the Gulf war had ended after dealing savage blows against the Baghdad government.     The Iranian news agency IRNA, in a report received in London, said the operation code-named Karbala-5 launched into Iraq on January 9 was now over.     It quoted a joint statewment by the Iranian Army and Revolutionary Guards Corps as saying that their forces had "dealt one of the severest blows on the Iraqi war machine in the history of the Iraq-imposed war."     The statement by the Iranian High Command appeared to herald the close of an assault on the port city of Basra in southern Iraq.     "The operation was launched at a time when the Baghdad government was spreading extensive propaganda on the resistance power of its army...," said the statement quoted by IRNA.     It claimed massive victories in the seven-week offensive and called on supporters of Baghdad to "come to their senses" and discontinue support for what it called the tottering regime in Iraq.     Iran said its forces had "liberated" 155 square kilometers of enemy-occupied territory during the 1987 offensive and taken over islands, townships, rivers and part of a road leading into Basra.     The Iranian forces "are in full control of these areas," the statement said.     It said 81 Iraqi brigades and battalions were totally destroyed, along with 700 tanks and 1,500 other vehicles. The victory list also included 80 warplanes downed, 250 anti- aircraft guns and 400 pieces of military hardware destroyed and the seizure of 220 tanks and armoured personnel carriers.  Reuter &#3;  
MERIDIAN BANCORP INC <MRDN> SETS REGULAR PAYOUT	19870226214034	Qtly div 25 cts vs 25 cts prior     Pay April one     Record March 15  Reuter &#3;  
U.S. BANK DISCOUNT BORROWINGS 310 MLN DLRS	19870226214134	U.S. bank discount window borrowings less extended credits averaged 310 mln dlrs in the week to Wednesday February 25, the Federal Reserve said.     The Fed said that overall borrowings in the week fell 131 mln dlrs to 614 mln dlrs, with extended credits up 10 mln dlrs at 304 mln dlrs. The week was the second half of a two-week statement period. Net borrowings in the prior week averaged 451 mln dlrs.     Commenting on the two-week statement period ended February 25, the Fed said that banks had average net free reserves of 644 mln dlrs a day, down from 1.34 billion two weeks earlier.     A Federal Reserve spokesman told a press briefing that there were no large single day net misses in the Fed's reserve projections in the week to Wednesday.     He said that natural float had been "acting a bit strangely" for this time of year, noting that there had been poor weather during the latest week.     The spokesman said that natural float ranged from under 500 mln dlrs on Friday, for which he could give no reason, to nearly one billion dlrs on both Thursday and Wednesday.     The Fed spokeman could give no reason for Thursday's high float, but he said that about 750 mln dlrs of Wednesday's float figure was due to holdover and transportation float at two widely separated Fed districts.     For the week as a whole, he said that float related as of adjustments were "small," adding that they fell to a negative 750 mln dlrs on Tuesday due to a number of corrections for unrelated cash letter errors in six districts around the country.     The spokesman said that on both Tuesday and Wednesday, two different clearing banks had system problems and the securities and Federal funds wires had to be held open until about 2000 or 2100 EST on both days.     However, he said that both problems were cleared up during both afternoons and there was no evidence of any reserve impact.     During the week ended Wednesday, 45 pct of net discount window borrowings were made by the smallest banks, with 30 pct by the 14 large money center banks and 25 pct by large regional institutions.     On Wednesday, 55 pct of the borrowing was accounted for by the money center banks, with 30 pct by the large regionals and 15 pct by the smallest banks.     The Fed spokesman said the banking system had excess reserves on Thursday, Monday and Tuesday and a deficit on Friday and Wedndsday. That produced a small daily average deficit for the week as a whole.     For the two-week period, he said there were relatively high excess reserves on a daily avearge, almost all of which were at the smallest banks.  Reuter &#3;  
AMERICAN EXPRESS <AXP> SEEN IN POSSIBLE SPINNOFF	19870226214313	American Express Co remained silent on market rumors it would spinoff all or part of its Shearson Lehman Brothers Inc, but some analysts said the company may be considering such a move because it is unhappy with the market value of its stock.     American Express stock got a lift from the rumor, as the market calculated a partially public Shearson may command a good market value, thereby boosting the total value of American Express. The rumor also was accompanied by talk the financial services firm would split its stock and boost its dividend.     American Express closed on the New York Stock Exchange at 72-5/8, up 4-1/8 on heavy volume.     American Express would not comment on the rumors or its stock activity.     Analysts said comments by the company at an analysts' meeting Tuesday helped fuel the rumors as did an announcement yesterday of management changes.     At the meeting, company officials said American Express stock is undervalued and does not fully reflect the performance of Shearson, according to analysts.     Yesterday, Shearson said it was elevating its chief operating officer, Jeffery Lane, to the added position of president, which had been vacant. It also created four new positions for chairmen of its operating divisions.     Analysts speculated a partial spinoff would make most sense, contrary to one variation on market rumors of a total spinoff.     Some analysts, however, disagreed that any spinoff of Shearson would be good since it is a strong profit center for American Express, contributing about 20 pct of earnings last year.     "I think it is highly unlikely that American Express is going to sell shearson," said Perrin Long of Lipper Analytical. He questioned what would be a better investment than "a very profitable securities firm."     Several analysts said American Express is not in need of cash, which might be the only reason to sell a part of a strong asset.     But others believe the company could very well of considered the option of spinning out part of Shearson, and one rumor suggests selling about 20 pct of it in the market.     Larry Eckenfelder of Prudential-Bache Securities said he believes American Express could have considered a partial spinoff in the past.     "Shearson being as profitable as it is would have fetched a big premium in the market place. Shearson's book value is in the 1.4 mln dlr range. Shearson in the market place would probably be worth three to 3.5 bilion dlrs in terms of market capitalization," said Eckenfelder.     Some analysts said American Express could use capital since it plans to expand globally.     "They have enormous internal growth plans that takes capital. You want your stock to reflect realistic valuations to enhance your ability to make all kinds of endeavors down the road," said E.F. Hutton Group analyst Michael Lewis.     "They've outlined the fact that they're investing heavily in the future, which goes heavily into the international arena," said Lewis. "...That does not preclude acquisitions and divestitures along the way," he said.     Lewis said if American Express reduced its exposure to the brokerage business by selling part of shearson, its stock might better reflect other assets, such as the travel related services business.     "It could find its true water mark with a lesser exposure to brokerage. The value of the other components could command a higher multiple because they constitute a higher percentage of the total operating earnings of the company," he said.      Lewis said Shearson contributed 316 mln in after-tax operating earnings, up from about 200 mln dlrs in 1985.      Reuter &#3;  
OHIO MATTRESS <OMT> MAY HAVE LOWER 1ST QTR NET	19870226201915	Ohio Mattress Co said its first quarter, ending February 28, profits may be below the 2.4 mln dlrs, or 15 cts a share, earned in the first quarter of fiscal 1986.     The company said any decline would be due to expenses related to the acquisitions in the middle of the current quarter of seven licensees of Sealy Inc, as well as 82 pct of the outstanding capital stock of Sealy.     Because of these acquisitions, it said, first quarter sales will be substantially higher than last year's 67.1 mln dlrs.     Noting that it typically reports first quarter results in late march, said the report is likely to be issued in early April this year.     It said the delay is due to administrative considerations, including conducting appraisals, in connection with the acquisitions.  Reuter &#3;  
U.S. M-1 MONEY SUPPLY ROSE 2.1 BILLION DLRS	19870226214435	U.S. M-1 money supply rose 2.1 billion dlrs to a seasonally adjusted 736.7 billion dlrs in the February 16 week, the Federal Reserve said.     The previous week's M-1 level was revised to 734.6 billion dlrs from 734.2 billion dlrs, while the four-week moving average of M-1 rose to 735.0 billion dlrs from 733.5 billion.     Economists polled by Reuters said that M-1 should be anywhere from down four billion dlrs to up 2.3 billion dlrs. The average forecast called for a 300 mln dlr M-1 rise.  Reuter &#3;  
GENERAL BINDING <GBND> IN MARKETING AGREEMENT	19870226214508	General Binding Corp said it reached a marketing agreement with Varitronic Systems Inc, a manufacturer and marketer of electronic lettering systems.     Under terms of the agreement, General Binding will carry Varitronics' Merlin Express Presentation Lettering System, a portable, battery-operated lettering system which produces type on adhesive-backed tape.  Reuter &#3;  
LIBERTY ALL-STAR <USA> SETS INITIAL PAYOUT	19870226214544	Liberty All-Star Equity Fund said it declared an initial dividend of five cts per share, payable April two to shareholders of record March 20.     It said the dividend includes a quarterly dividend of three cts a share and a special payout of two cts a share, which covers the period from November three, 1986, when the fund began operations, to December 31, 1986.     The fund said its quarterly dividend rate may fluctuate in the future.  Reuter &#3;  
COCA COLA <KO> UNIT AND WORLD FILM IN VENTURE	19870226214745	Coca-Cola Co's Entertainment Business Sector Inc unit said it formed a joint venture with an affiliate of World Film Services to acquire, produce and distribute television programming around the world.     World Film Services was formed by chairman John Heyman in 1963 to produce films.      Reuter &#3;  
FORD MOTOR CREDIT <F> TO REDEEM DEBENTURES	19870226214753	Ford Motor Co said its Ford Motor Credit Co on April One will redeem 4.0 mln dlrs of its 8.70 pct debentures due April 1, 1999.     It said the debentures are redeemable at a price of 100 pct of the principal. Because April 1, 1987 is an interest payment date on the debentures, no accrued interest will be payable on the redemption date as part of the redemption proceeds.     Debentures will be selected for redemption on a pro rata basis, Ford said.   Reuter &#3;  
STERLING SOFTWARE <SSW> NOTE HOLDERS OK BUY	19870226214802	Sterling Software Inc said it received consent of a majority of the holders of its eight pct convertible sernior subordinated debentures required to purchase shares of its common.     The company said it may now buy its stock at its discretion depending on market conditions.  Reuter &#3;  
<SCHULT HOMES CORP> MAKES INITIAL STOCK OFFER	19870226214818	Schult Homes Corp announced an initial public offering of 833,334 units at five dlrs per unit, said Janney Montgomery Scott Inc and Woolcott and Co, managing underwriters of the offering.     They said each unit consists of one common share and one warrant to buy one-half share of common.     The warrant will entitle holders to buy one-half common share at 5.50 dlrs per full share from March one, 1988, to September one, 1989, and thereafter at 6.50 dlrs per full share until March 1991, they said.  Reuter &#3;  
FLUOR <FLR> UNIT GETS CONSTRUCTION CONTRACT	19870226214826	Fluor Corp said its Fluor Daniel unit received a contract from Union Carbide Corp <UK> covering design, procurement and construction of a 108 megawatt combined cycle cogeneration facility in Seadrift, Texas.     The value of the contract was not disclosed.  Reuter &#3;  
SUFFIELD FINANCIAL CORP <SFCP> SELLS STOCK	19870226214835	Suffield Financial Corp said   Jon Googel and Benjamin Sisti of Colonial Realty, West Hartford, Conn., purchased 175,900 shares of its stock for 3,416,624.     The company said the purchase equals 5.2 pct of its outstanding shares.  Reuter &#3;  
