The solution, some test code and a patch are at
http://wiki.quantlib.org/twiki/bin/view/Quantlib/FdDividendAmericanOptionInstabilityBasically what was happening was that firstNonZeroDate_ was not being
set if there was only one dividend date. This caused rollback to run
the simulation in reverse.
What I'll try to do next is to code up some trace code so that the debug
output that I used to track
down the bug can be incorporated in the library. There was one crucial
thing that would have
quickly pointed out the problem if quantlib had some internal tracing calls.