diff --git a/anselme/stdlib/number.lua b/anselme/stdlib/number.lua index a3975e5..0e24300 100644 --- a/anselme/stdlib/number.lua +++ b/anselme/stdlib/number.lua @@ -44,7 +44,16 @@ return { { "_-_", "(a::is number, b::is number)", function(state, a, b) return Number:new(a.number - b.number) end }, { "_*_", "(a::is number, b::is number)", function(state, a, b) return Number:new(a.number * b.number) end }, { "_/_", "(a::is number, b::is number)", function(state, a, b) return Number:new(a.number / b.number) end }, - { "_//_", "(a::is number, b::is number)", function(state, a, b) return Number:new(math.floor(a.number / b.number)) end }, + { + "_//_", "(a::is number, b::is number)", function(state, a, b) + local r = a.number / b.number + if r < 0 then + return Number:new(math.ceil(r)) + else + return Number:new(math.floor(r)) + end + end + }, { "_%_", "(a::is number, b::is number)", function(state, a, b) return Number:new(a.number % b.number) end }, { "_^_", "(a::is number, b::is number)", function(state, a, b) return Number:new(a.number ^ b.number) end }, { "-_", "(a::is number)", function(state, a) return Number:new(-a.number) end },