diff --git a/hledger-lib/Hledger/Query.hs b/hledger-lib/Hledger/Query.hs index edc5dc432..daf41bc3a 100644 --- a/hledger-lib/Hledger/Query.hs +++ b/hledger-lib/Hledger/Query.hs @@ -291,7 +291,8 @@ parseAmountQueryTerm s' = '>':'-':s -> (Gt, negate $ readDef err s) '=':'-':s -> (Eq, negate $ readDef err s) '-':s -> (Eq, negate $ readDef err s) - '<':s -> (AbsLt, readDef err s) + '<':s -> let n = readDef err s in case n of 0 -> (Lt, 0) + _ -> (AbsLt, n) '>':s -> (AbsGt, readDef err s) '=':s -> (AbsEq, readDef err s) s -> (AbsEq, readDef err s) @@ -301,7 +302,7 @@ parseAmountQueryTerm s' = tests_parseAmountQueryTerm = [ "parseAmountQueryTerm" ~: do let s `gives` r = parseAmountQueryTerm s `is` r - "<0" `gives` (AbsLt,0) -- would be always false + "<0" `gives` (Lt,0) -- special case, AbsLt 0 would be always false ">10000.10" `gives` (AbsGt,10000.1) "=0.23" `gives` (AbsEq,0.23) "0.23" `gives` (AbsEq,0.23)