OK, Thats enough of an idea.
The issue is to do with the DIMZIN value affecting the RTOS function output formatting.
With dimzin 8
( rtos 500.02 2 4)
==>> "500.02"
(kb:rtos 500.02 2 4)
==>> "500.0200"
(defun kb:rtos (fval xmode xprec / sval odz)
(setq odz (getvar "DIMZIN"))
(setvar "DIMZIN" 0)
(setq sval (rtos fval xmode xprec))
(setvar "DIMZIN" odz)
sval
)