Pat.Terry@p101.f4.n494.z5.fidonet.org (Pat Terry) (11/06/90)
There is a slight bug in the FST 2.0 RealConversions module. It does not round negative values correctly. Better code would be as follows For the LONGREAL bit PROCEDURE putRealF( x :REAL; nd, n :INTEGER ); VAR neg :BOOLEAN; d :ARRAY [0..MaxMantDigs] OF CHAR; i :INTEGER; decAt, int :INTEGER; BEGIN IF n < nd+2 THEN ok := FALSE; RETURN END; n := n - (nd+2); * IF x >= 0.0 * THEN x := x + SHORT(5.0/TenTo(nd+1)); (* round *) * ELSE x := x - SHORT(5.0/TenTo(nd+1)); (* round *) END; and for the REAL bit * IF x >= 0.0 * THEN x := x + 5.0/TenTo(nd+1); (* round *) * ELSE x := x - 5.0/TenTo(nd+1); (* round *) * END; -- uucp: uunet!m2xenix!puddle!5!494!4.101!Pat.Terry Internet: Pat.Terry@p101.f4.n494.z5.fidonet.org