This appears to affect all implementations derived from CMUCL's FORMAT.
18.104.22.168 of the HyperSpec for Tilde F states:
Exactly w characters will be output. First, leading copies of the
character padchar (which defaults to a space) are printed, if
necessary, to pad the field on the left. If the arg is negative, then a
minus sign is printed; if the arg is not negative, then a plus sign is
printed if and only if the @ modifier was supplied.
(format nil "~@F" 1.23) returns 1.23 instead of +1.23
CLISP returns the correct string.