Compare how these two expressions print:
:lisp (setq $A '((MTIMES SIMP) ((RAT) -1 3) ((MPLUS SIMP) 1 $X)))
:lisp (setq $B '((MTIMES SIMP) ((RAT SIMP) -1 3) ((MPLUS SIMP) 1 $X)))
(%i1) a;
(%o1) (-1*(x+1))/3
(%i2) b;
(%o2) -((x+1)/3)
Why does printing depend on the presence of a simp flag?
There are lots of places in Maxima where literal '((rat) 1 2) expressions are passed into functions like add or mul that expect their arguments to be simplified. These should probably all be fixed.
Diff: