Comments / Suggestions / a couple minor bugs in 1.7.5

Brian Smith bsmith3@charter.net
Thu, 19 Dec 2002 12:10:16 -0500


First, let me start by saying that GnuCash is the best 
open-source finance app out there, and I’ very 
grateful that there are folks willing to work thanklessly 
on providing it. I’m saying this because without 
this preamble, my comments below might sound like a rant.

I’ve managed to get GnuCash 1.7.5 compiled on my 
Mandrake Cooker system. I’ll start by saying that I 
had major problems at first getting all the libraries to 
install correctly - to fix it, I had to use the 
distro’s libtool instead of the one in the GnuCash 
tarball. If you guys see anyone who complains that 
’make install’ creates a bunch of 
lib<something>.so.0.0.0U files and doesn't install those 
libraries, that might be their problem as well. Anyway, on 
to the nitty gritty. Here are the problems I've run into 
so far, some of them are 1.7.5 specific, some are not.

First, the closest thing to a show-stopping bug I've found 
in 1.7.5: some of the text fields (e.g., the status bar at 
the bottom of windows, the amounts at the bottom of the 
reconcile window) are not redrawing correctly. It's like 
text is never erased from the fields before being 
repainted. It's only a cosmetic problem in most places, 
but it makes reconcile impossible to use.

Next, there are a few problems with the new loan setup 
feature. The first thing I noticed is it doesn't show you 
the calculated payment amount until almost the end. To me, 
it seems that the calculated amount should be shown at the 
very beginning. It would even be nice if you could enter 
the P+I amount and have GnuCash compute either the 
Interest Rate, Number of Payments, or Loan Amount (the 
loan wizards in 'those other programs' do that).

Another thing that was not intuitive to me was that if you 
have an escrow amount, it looks like you need to erase the 
formula from one of the screens and put the actual total 
payment number in its place. Then there's a dropdown box 
that selects additional payment to Principal, Interest, or 
Escrow. What would seem more logical on this screen is to 
have an addition chart like this (I hope this looks OK):

    LOAN PAYMENT:  P + I amount:   1197.38     <--- 
calculated by GnuCash
                   Escrow amount:  _______     <--- 
user-entered (if escrow
                                                    is 
applicable)
                   Tax amount:     _______     <--- only 
shown if tax is *not*
                                                    paid 
through escrow
                   Insurance amt:  _______     <--- ditto
                   PMI amount:     _______     <--- ditto
                   Add'l amounts:  _______     <--- this 
could open a split
                                                    window 
for extra amounts

                   Total Payment:  2105.48     <--- 
calculated by GnuCash

This would allow for folks who have escrow *and* plan to 
pay extra principal, or people who use auto-pay services 
that charge an extra per-transaction fee (Countrywide, one 
of the largest mortgage firms, has programs that do that).

The tax, insurance, and PMI amounts could then be handled 
on one screen. GnuCash already knows whether they're paid 
from escrow or as part of the payment, so all it needs to 
know are the expense accounts to debit and how to schedule 
the transactions if they're not part of the loan payment.

Finally, I'll add that unless I did something wrong, 
GnuCash never actually put the transfer to the escrow 
account in the scheduled payments. It also did the 
scheduling screwy. My first payment date was 2/1/2003, and 
I had yearly tax and insurance payments from the escrow 
account set for 11/1/2003 and 7/1/2003 respectively. 
Everything looked fine on the chart that came up before 
the finish page, but when the transactions were actually 
scheduled, the first occurences were 3/1/2003, 11/1/2004, 
and 7/1/2004. The scheduled transaction editor showed the 
correct first dates as the 'transaction last occured' 
dates, as if they had already happened.

To quote Forrest Gump, that's all I have to say about 
that. Now on to the only other area in which the 
proprietary competitors still have an edge: investments.

First, what is the correct way to account for a stock sold 
for a profit? A buy at one price and a sell at a higher 
price will increase total assets, but there is no credit 
to an income account. So the balance sheet gets 
unbalanced. Should the sale be shown at the original 
price, and an income account created to make up the 
difference so the total sale goes to the cash account? 
This keeps the accounting balanced, but if you look at 
your stock transactions the sale price isn't correct. It 
would be nice if GnuCash could handle this internally, 
displaying the real sale price but internally balancing 
the sell transaction with an income account, like the 
following example:

On 1/1/02, I buy 10 shares of XYZ at $5 each. The 
transaction credits Cash $50 and debits Stock:XYZ 10 
shares, with a $5 price.

Now on 3/1/02, I sell my 10 shares at $7. The transaction 
credits Cash $70, debits Stock:XYZ 10 shares, with a $7 
price displayed but an internal 'pretend' $5 price, and 
credits Income:Capital Gains $20.

Incidentally, it would be nice if transactions entered in 
the register would update the security's price. This isn't 
a big deal for publicly-traded securities where quotes can 
be pulled from the Internet, but many mutual funds aren't 
publicly traded, and it would be nice if you could just 
enter the transaction off the statement and the price get 
updated so that your total balances stay correct without a 
trip to the Price Editor. While I'm wishing, the Chart of 
Accounts should display two balances for stock accounts: a 
share balance, and a balance in the main currency of the 
file. Actually, this would be nice for any account which 
is not in the main currency of the file.

The other investment thing that needs a bit of work is 
dividends. There are two scenarios to deal with, dividends 
paid in cash and dividends reinvested. The reinvested 
dividends are really simple to track, I just enter a 
purchase for X shares at $Y and credit Income:Dividends. 
For dividends which pay out to cash, though, there is no 
change in share balance, just a credit to Income and a 
debit to a bank or cash account. This seems simple to 
enter, but if you just enter it in the cash account, 
there's nothing tying the income to the specific stock 
which paid the dividend. Ideally, I guess, the transaction 
would be entered from the stock account, would debit cash 
and credit income, and have no effect on the share 
balance. This is sort-of how I enter it now, but the 
dollar amount can only be seen in the cash account, not in 
the stock account.

One last thing about 1.7.5: I'm not terribly fond of the 
OFX import transaction matching. Something similar to the 
way Q****en does it would be more intuitive. In case 
you're not familiar with it, the transaction matching is 
basically done in the register. Below the register is a 
scrollable list of imported transactions. AS you select an 
imported transaction, Q* selects the closest match. If 
there's not a reasonable match, it creates a transaction 
and selects it. The user can accept the match (or new 
transaction) or select a different transaction in the 
register to match, then click an Accept button to confirm 
the match. This is repeated until all the transactions are 
matched. Q* also allows this operation to be postponed and 
finished later, for instance if you can't remember what 
you bought at Wal-Mart and left the receipt at work.

A nice side effect of the way Q* does it, is that a new 
transaction being imported can easily be edited in the 
register as it's being entered, for example a credit card 
company might have 'AMAZON-COM  1800xxxyyyy' as the payee, 
whereas I want it to just say 'Amazon.com'. What would be 
*really* cool is if the new transaction would try to 
auto-fill the payee with a close match from previously 
entered transactions instead of using the exact text from 
the imported file.

Okay, I'm almost done (whew!). One final thing I think 
would be neat. Currently, a transaction has one payee that 
appears on every split line. It would be very cool if each 
line could have a separate payee field, so that a deposit 
could be entered which would show up as Deposit, then the 
individual checks from different entities could have 
different payee fields, so a report of income categories 
would show 'Fred Smith' and 'Joe Black' paid me money 
instead of just 'Deposit'. Currently to keep track of 
multiple payees, you need multiple transactions, but if 
you've really made one deposit at the bank this makes 
reconciliation (or OFX import) more difficult.

Another nice side effect - transfers between asset 
accounts could be labeled more intuitively. The debit to 
checking might say 'Transfer from Savings' and the credit 
to savings would say 'Transfer to Checking'. I realize 
each split already has a Memo line that can be used for 
this, but I think multiple payee fields would be better. 
If they're not used, the payee from the account in which 
the transaction was entered could just propagate to all 
the splits and everything would look just as it does now.

I hope this hasn't been too long of a thing to read. I'd 
like to hear any comments or suggestions, or even 
criticism if there's something I'm obviously doing wrong 
somewhere.

Thanks,
Brian