There is a bug in puglin ROUND function:

The ROUND in plugin:

round: func [
    [catch]
    n [number! money! time!]
    /even
    /down
    /half-down
    /floor
    /ceiling
    /half-ceiling
    /to
    scale [number! money! time!]
    /local m
][
    throw-on-error [
        scale: abs any [scale 1]
        any [number? n scale: make n scale]
        make scale either any [even half-ceiling] [
            m: 0,.0 * scale + n
            any [
                all [
                    m = m: m - mod m scale
                    even
                    positive? m - n
                    m - mod m scale + scale
                ]
                m
            ]
        ] [
            any [
                floor
                ceiling
                (ceiling: (found? half-down) xor negative? n down)
                n: add n scale * pick [0,.0 0,.0] ceiling
            ]
            either ceiling [n + mod negate n scale] [n - mod n scale]
        ]
    ]
]

ROUND in VIEW:

round: func [
    {Returns the nearest integer. Halves round up (away from zero) by
default.}
    [catch]
    n [number! money! time!] "The value to round"
    /even "Halves round toward even results"
    /down {Round toward zero, ignoring discarded digits. (truncate)}
    /half-down "Halves round toward zero"
    /floor "Round in negative direction"
    /ceiling "Round in positive direction"
    /half-ceiling "Halves round in positive direction"
    /to "Return the nearest multiple of the scale parameter"
    scale [number! money! time!] "Must be a non-zero value"
    /local m
][
    throw-on-error [
        scale: abs any [scale 1]
        any [number? n scale: make n scale]
        make scale either any [even half-ceiling] [
            m: 0.5 * scale + n
            any [
                all [
                    m = m: m - mod m scale
                    even
                    positive? m - n
                    m - mod m scale + scale
                ]
                m
            ]
        ] [
            any [
                floor
                ceiling
                (ceiling: (found? half-down) xor negative? n down)
                n: add n scale * pick [-0.5 0.5] ceiling
            ]
            either ceiling [n + mod negate n scale] [n - mod n scale]
        ]
    ]
]


-- 
nome: "José Antonio Meira da Rocha"  tratamento: "Prof. MS."
atividade: "Ensino e pesquisa em mídias digitais"
googletalk: email: MSN: [EMAIL PROTECTED]
site: http://meiradarocha.jor.br ICQ: 658222 Skype: "meiradarocha_jor"

-- 
To unsubscribe from the list, just send an email to 
lists at rebol.com with unsubscribe as the subject.

Reply via email to