Cash flow financial planning software
There are two general approaches to investing: investment analysis and cash flow analysis.
Investment analysis focuses on risk, return, asset allocation, past and future performance: the “what to invest in” side of investments. Cash flow analysis concentrates on the “how much” and “when” side of things.
The cash flow program generally aggregates the 10, 30 or 50 individual investments in a person’s portfolio into three or four broad categories, depending on how they interact with tax over time. The most common categories are: registered, nonregistered, equities, and taxfree savings. The risk/reward profile of these investment categories is generally handled by varying their aggregate growth rates (sometimes varying it over time).
There are certain types of programs called 'product illustrators' that deal with individual financial products: insurance, annuities, RESPs, loans, etc. These are generally specific/proprietary to the company using it. These should not be confused with full planning programs. They are primarily designed to help financial products salespeople (mainly insurance agents) portray, with graphics and charts, the estimated value of a given product over time. The chief problem is that, while “product illustrations” are frequently based on generic income tax calculations, they don't capture the potential client's full financial picture (e.g., the interaction of all cash flows, from investment accounts, registered accounts, pension accounts, lockedin accounts, salary, loans, entitlement income and the like).
Contents
Major cash flow program categories in order of sophistication
Compound interest tools
These are generally web or spreadsheetbased with no tax component. They solve for the problem of: "how much capital do I need to retire on?" or: "If I save X$ a month, how big will my nest egg grow?" or: "how much can I safely withdraw in order to have my capital see me out to a certain age?", etc.
Average/marginal tax rate programs
These programs will generally include noninvestment components such as CPP, OAS, and loans, etc... and in many cases they are spreadsheetbased. Tax is approximated as a single number ...


 before tax income = after tax income / (1  average tax rate)

...such that a spreadsheet can be used to build it. Be wary. In reality, individual taxes payable are the product of a complex formula with separate tax brackets, thresholds, age credits and there is a separate calculation for both federal and provincial tax. Also to consider: tax brackets are indexed to inflation and investment returns interact with tax in different ways, depending on their nature (interest/dividends/capital gains, depending as well on whether it's a registered or nonregistered account). The average tax rate program seriously misrepresents the CRA characterization of taxable income in an individual's plan.
For example, the following formula would be used to determine how much capital a retiree should pull from his RRSP in order to attain a certain lifestyle (after tax)...


 RRSP withdrawal = desired lifestyle/ (1 txrate)

Where 'txrate' is a simple factor rather than the tax formula itself.
"Shortfall" programs
These programs are 'taxaccurate', to the extent that they imbed the progressive income tax algorithm in their calculations, The problem is that they don't goalseek.... the after tax income is calculated (topdown), not forced (bottomup) The giveaway is that there will be elements in the resulting cash flows designated as 'shortfall', 'surplus' or 'deficit'.
The reason these elements appear is that the programs' author couldn't deal with the recursion math needed to solve the true 'needsbased' model. 'Shortfall/surplus' is the difference between what the user wants as a net income target and what the program calculates. In other words it is an approximated solution, since shortfall is not a tangible financial entity... you can't count it or eat it.
While it is possible to create a 'needsbased' plan with a shortfall program (i.e. one in which the shortfall is small or reduced to almost zero), it takes a long time to craft one. Because there is no recursion math, the user is forced to manually adjust the investment contribution and withdrawal levels on a trial and error basis in order to reduce or eliminate the 'shortfall/surplus' in the output. This can be very tedious, to the point where most users will arbitrarily approximate the answer, and put up with having shortfall/surplus/deficit elements in the results.
"Needsbased/recursive" programs
These are also tax accurate projections but they take the prior (shortfall) program to its final conclusion. Whereas the shortfall program can be made to eliminate or reduce the shortfall/surplus from the results, it can take forever, since it is generally done manually by massaging or tweaking the investment deposit & withdrawal levels. The recursive program does the same thing, except it is done automatically by the program... and moreover, it does it in an acceptable amount of time (a few seconds say). Like the 'shortfall' program, the 'recursive' program will report the correct tax, however, since the recursion process eliminates all reference to 'shortfall/deficit/surplus'... the results are precise and unambiguous.
In addition, because the needsbased program produces a single meaningful result automatically (handsfree), in a reasonable time frame, it lends itself to Monte Carlo simulation  that is, running sucessive 'constant lifestyle' or 'diebroke' scenarios under randomly varied rate arrays. The resulting Monte Carlo statistics are more meaningful, because, rather than looking at only beforetax investment projections, they include all noninvestment aspects as well, such as tax, pensions, loans, salary... etc. The subject gets to see what his aftertax lifestyle, displayed as hilomedian values or as a frequency distribution. This is much more meaningful than the normal Monte Carlo paradigm... "your capital is going to run out at a certain age".
Recursion... what is it?
All computers use recursion^{[1]} in some way or other. While the electronic heart of the computer (hardware) can add, multiply and compare, when it comes to calculating more complex mathematical functions... (trig functions, exponentiation, financial functions such as PV, ROI, even square root).... these are done with software. If you are old enough to remember when calculators first came out, you will recall that you could add/subtract/multiply numbers instantaneously. When you tried to do an NPV or mortgage calculation... there was a noticeable pause. During that pause, the computer is iteratively or recursively solving for that function. Nowadays, of course, computers are infinitely faster, and that pause is no longer noticeable. The recursion math is still being performed, however.
The reverse tax engine... which solves the needsbased financial planning problem... is doing that same repetitive trial and error recursion. It takes the aftertax target income (lifestyle) and repetitively crunches through the income tax (T1) formula until it finds exactly that beforetax income which delivers the specified after tax result.
The caveat here is that the time required to do this should be a few seconds. If it takes any longer, then the user won't have the patience to perform real financial tasks such as...

 what does retiring at 55 instead of 60 do to my retirement lifestyle?....
 should I pay my mortgage down or contribute to my RRSP?...
 should I invest in my TFSA, RRSP, or both?...
 what is the effect on my retirement lifestyle (or estate) if I sell the family cottage in ten years, or hold on to it forever?
These, as well as simple rate changes, say, are going to be very tedious if you have to wait long periods of time between each projection. Speed of convergence is mandatory.
How to tell what type of program you are using.
If there is a data entry element or prompt for a single 'average', 'marginal' or simply a tax rate, then you are looking at an 'average tax rate' program.
If you see the elements: 'shortfall', 'surplus' or 'deficit' in the program's output it is a shortfall program. Or, if the program solves instantly whenever you make a simple change to a variable, it is not doing the recursion math and is probably 'shortfall' in nature.
If you see tax calculated in the output, it appears accurate, AND, when you make a change to a parameter (rate, retirement age, province...) it takes a finite time to recalculate and display the results (several seconds or longer), then in all probability it is 'needsbased' and uses recursive math techniques.
References
 ↑ Wikipedia. Recursion in Mathematics Viewed March 27, 2009