diff --git a/src/algebra/float.spad b/src/algebra/float.spad
index 9eb4c7a8..a25da46a 100644
--- a/src/algebra/float.spad
+++ b/src/algebra/float.spad
@@ -113,25 +113,29 @@ Float():
    outputFloating : () -> Void
       ++ outputFloating() sets the output mode to floating (scientific) notation, i.e.
       ++ \spad{mantissa * 10 exponent} is displayed as  \spad{0.mantissa E exponent}.
-   outputFloating : N -> Void
+   outputFloating : N -> I
       ++ outputFloating(n) sets the output mode to floating (scientific) notation
       ++ with n significant digits displayed after the decimal point.
+      ++ Returns the previous number of significant digits displayed.
    outputFixed : () -> Void
       ++ outputFixed() sets the output mode to fixed point notation;
       ++ the output will contain a decimal point.
-   outputFixed : N -> Void
+   outputFixed : N -> I
       ++ outputFixed(n) sets the output mode to fixed point notation,
       ++ with n digits displayed after the decimal point.
+      ++ Returns the previous number of significant digits displayed.
    outputGeneral : () -> Void
       ++ outputGeneral() sets the output mode (default mode) to general
       ++ notation; numbers will be displayed in either fixed or floating
       ++ (scientific) notation depending on the magnitude.
-   outputGeneral : N -> Void
+   outputGeneral : N -> I
       ++ outputGeneral(n) sets the output mode to general notation
       ++ with n significant digits displayed.
-   outputSpacing : N -> Void
+      ++ Returns the previous number of significant digits displayed.
+   outputSpacing : N -> N
       ++ outputSpacing(n) inserts a space after n (default 10) digits on output;
       ++ outputSpacing(0) means no spaces are inserted.
+      ++ Returns previous setting.
   == add
    BASE ==> 2
    BITS : PI := 68 -- 20 digits
@@ -905,13 +909,13 @@ Float():
          s := if zero? SPACING then "E" else " E "
          concat ["0.", t, s, convert(e+n)@S]
 
-   outputSpacing n == SPACING := n
+   outputSpacing n == (tmp := SPACING; SPACING := n; tmp)
    outputFixed() == (OUTMODE := "fixed"; OUTPREC := -1)
-   outputFixed n == (OUTMODE := "fixed"; OUTPREC := n::I)
+   outputFixed n == (OUTMODE := "fixed"; tmp := OUTPREC; OUTPREC := n::I; tmp)
    outputGeneral() == (OUTMODE := "general"; OUTPREC := -1)
-   outputGeneral n == (OUTMODE := "general"; OUTPREC := n::I)
+   outputGeneral n == (OUTMODE := "general"; tmp := OUTPREC;OUTPREC := n::I;tmp)
    outputFloating() == (OUTMODE := "floating"; OUTPREC := -1)
-   outputFloating n == (OUTMODE := "floating"; OUTPREC := n::I)
+   outputFloating n == (OUTMODE := "floating";tmp := OUTPREC;OUTPREC := n::I;tmp)
 
    convert(f) : S ==
       b : Integer :=
