Try this:
(defun ROUND (ZAHL STELLEN / TEMP )
(if (and(numberp ZAHL) (=(type STELLEN) 'INT))
(progn
(setq TEMP (abs ZAHL))
(repeat STELLEN (setq TEMP (* TEMP 10.0)))
(cond
( (> (- TEMP (fix TEMP)) 0.5) (setq TEMP (+ (fix TEMP) 1)))
( (< (- TEMP (fix TEMP)) 0.5) (setq TEMP (fix TEMP) ))
( (= (- TEMP (fix TEMP)) 0.5)
(if (equal (/ (fix TEMP) 2.0) (fix(/ (fix TEMP) 2.0)) 0.001)
(setq TEMP (fix TEMP) )
(setq TEMP (+ (fix TEMP) 1))
)
)
)
(repeat STELLEN (setq TEMP (/ TEMP 10.0)))
(setq TEMP (* TEMP (if (< Zahl 0 ) -1.0 1.0)))
)
)
TEMP
)
(round Pi 3) --> 3.142
(round 13.999 0) ->14.0
(fix(round 13.999 0)) -> 14
or this
(defun ROUND2 (ZAHL BASIS / TEMP )
(if (and(numberp ZAHL) (=(numberp BASIS))(> BASIS 0))
(progn
(setq TEMP (/ (abs ZAHL) BASIS))
(cond
( (> (- TEMP (fix TEMP)) 0.5) (setq TEMP (+ (fix TEMP) 1)))
( (< (- TEMP (fix TEMP)) 0.5) (setq TEMP (fix TEMP) ))
( (= (- TEMP (fix TEMP)) 0.5)
(if (equal (/ (fix TEMP) 2.0) (fix(/ (fix TEMP) 2.0)) 0.001)
(setq TEMP (fix TEMP) )
(setq TEMP (+ (fix TEMP) 1))
)
)
)
(setq TEMP (* BASIS TEMP (if (< Zahl 0 ) -1.0 1.0)))
)
)
(if (=(type BASIS)'INT) (fix TEMP) TEMP)
)
(ROUND2 12.63 0.5) ->12.5
(ROUND2 12.63 1) -> 13
(ROUND2 12.63 2) -> 12