Predictable pattern matching?



Hello,
I try to recocnize a certain derivative and it's coefficient (for 
testing the pattern matching, just return what whas found in the 
function 'found'):

kill(all)$

matchdeclare(
     sym1_pat, symbolp,
     int1_pat, integerp,
     all1_pat, all
)$

expr1: 25 * a * 'diff(f(x),x)$
expr2: 25 * a * 'diff(f(x),x) * 'diff(g(x),x)$

defrule(
     findrule,
     all1_pat * 'diff(f(x), sym1_pat, int1_pat),
     block([var1,var2],
         var1: all1_pat,
         var2: [f(x), int1_pat, sym1_pat],
         found(var1, var2)
     )
)$

apply1(expr1, findrule);
 >>> found(25*a,[f(x),1,x])

apply1(expr2, findrule);
 >>> 25*found(1,[f(x),1,x])*a*('diff(g(x),x,1))

In the first case, the whole coefficient was found to match all1_pat, in 
the second case, only a 1 was matched.

How could I convince Maxima to match the whole coefficient in any case, 
to be able to operate further on them?

Thanks and regards,
Martin

( I was using:
wxMaxima 0.7.6 http://wxmaxima.sourceforge.net
Maxima 5.16.3 http://maxima.sourceforge.net
Using Lisp GNU Common Lisp (GCL) GCL 2.6.8 (aka GCL)
)