summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--amount.cc8
-rw-r--r--journal.cc3
2 files changed, 5 insertions, 6 deletions
diff --git a/amount.cc b/amount.cc
index 3a10828c..087a9bc5 100644
--- a/amount.cc
+++ b/amount.cc
@@ -548,14 +548,12 @@ amount_t::operator bool() const
if (! quantity)
return false;
- if (quantity->prec <= commodity().precision()) {
+ if (quantity->prec <= commodity().precision() ||
+ (quantity->flags & BIGINT_KEEP_PREC)) {
return mpz_sgn(MPZ(quantity)) != 0;
} else {
mpz_set(temp, MPZ(quantity));
- if (quantity->flags & BIGINT_KEEP_PREC)
- mpz_ui_pow_ui(divisor, 10, quantity->prec);
- else
- mpz_ui_pow_ui(divisor, 10, quantity->prec - commodity().precision());
+ mpz_ui_pow_ui(divisor, 10, quantity->prec - commodity().precision());
mpz_tdiv_q(temp, temp, divisor);
bool zero = mpz_sgn(temp) == 0;
return ! zero;
diff --git a/journal.cc b/journal.cc
index e3937b8b..638cce8b 100644
--- a/journal.cc
+++ b/journal.cc
@@ -259,13 +259,14 @@ bool entry_base_t::finalize()
}
}
+ balance.round();
+
if (balance) {
error * err =
new balance_error("Entry does not balance",
new entry_context(*this, "While balancing entry:"));
DEBUG_PRINT("ledger.journal.unbalanced_remainder",
"balance = " << balance);
- balance.round();
err->context.push_front
(new value_context(balance, "Unbalanced remainder is:"));
throw err;