procedure rtowzero(var x: hreal);
{ slow if x=0 }
var
  n: integer;
begin { rtowzero }
  with x do if ma[hdim]>0 then ma[hdim]:=ma[hdim]-1
  else begin
    n:=hdim;
    while (ma[n]=0) and (n>0) do begin
      ma[n]:=9999;
      n:=n-1;
    end;
    if n>0 then ma[n]:=ma[n]-1
    else if ma[0]>1 then ma[0]:=ma[0]-1
    else if ma[0]=1 then begin
      ma[0]:=9999;
      ex:=ex-1;
      if ex<-exmax then underflow:=true;
    end
    else if si<>0 then writeln('rtowzero: error - inconsistent input');
  end;
end { rtowzero };

