diff options
-rw-r--r-- | src/commodity.cc | 6 | ||||
-rw-r--r-- | test/regress/6DAB9FE3.test | 10 |
2 files changed, 14 insertions, 2 deletions
diff --git a/src/commodity.cc b/src/commodity.cc index 67a86b87..d826feb6 100644 --- a/src/commodity.cc +++ b/src/commodity.cc @@ -418,11 +418,13 @@ commodity_t::exchange(const amount_t& amount, if (commodity.annotated) current_annotation = &as_annotated_commodity(commodity).details; - amount_t per_unit_cost = (is_per_unit ? cost : cost / amount).abs(); + amount_t per_unit_cost = + (is_per_unit || amount.is_realzero() ? cost : cost / amount).abs(); DEBUG("commodity.prices.add", "exchange: per-unit-cost = " << per_unit_cost); - exchange(commodity, per_unit_cost, moment ? *moment : CURRENT_TIME()); + if (! per_unit_cost.is_realzero()) + exchange(commodity, per_unit_cost, moment ? *moment : CURRENT_TIME()); cost_breakdown_t breakdown; breakdown.final_cost = ! is_per_unit ? cost : cost * amount; diff --git a/test/regress/6DAB9FE3.test b/test/regress/6DAB9FE3.test new file mode 100644 index 00000000..50b944ae --- /dev/null +++ b/test/regress/6DAB9FE3.test @@ -0,0 +1,10 @@ +reg -E +<<< +2009/01/01 Sample + assets 0 FOO @ $8.88 + equity +>>>1 +09-Jan-01 Sample assets 0 0 + equity 0 0 +>>>2 +=== 0 |