summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--amount.cc3
-rw-r--r--entry.cc16
2 files changed, 11 insertions, 8 deletions
diff --git a/amount.cc b/amount.cc
index d96913d3..1749013e 100644
--- a/amount.cc
+++ b/amount.cc
@@ -703,7 +703,8 @@ bool amount_t::is_zero() const
throw_(amount_error, "Cannot determine if an uninitialized amount is zero");
if (has_commodity()) {
- if (quantity->prec <= commodity().precision())
+ if (quantity->prec <= commodity().precision() ||
+ quantity->has_flags(BIGINT_KEEP_PREC))
return is_realzero();
else
return round(commodity().precision()).sign() == 0;
diff --git a/entry.cc b/entry.cc
index 2feaa761..81dfc7df 100644
--- a/entry.cc
+++ b/entry.cc
@@ -311,14 +311,16 @@ bool entry_base_t::finalize()
// (item-position-end-line (entry-position entry))
// (format-value balance :width 20)))
- if (! balance.is_null() && ! balance.is_zero()) {
- error * err =
- new balance_error("Entry does not balance",
- new entry_context(*this, "While balancing entry:"));
+ if (! balance.is_null()) {
balance.round();
- err->context.push_front
- (new value_context(balance, "Unbalanced remainder is:"));
- throw err;
+ if (! balance.is_zero()) {
+ error * err =
+ new balance_error("Entry does not balance",
+ new entry_context(*this, "While balancing entry:"));
+ err->context.push_front
+ (new value_context(balance, "Unbalanced remainder is:"));
+ throw err;
+ }
}
return true;