Just noticed this very trivial case:
-(x+1)*(x+1) => (-x-1)*(x+1) rather than -(x+1)^2
This is because -(x+1) => -x-1, and the expression is parsed as
(-(x+1))*(x+1) rather than as -((x+1)*(x+1)).
Of course, the workaround is simply factor(...), but I wonder if others
find this annoying, and whether it is fixable without messing up other
cases....
-s