Question concerning sum



I'm using the following applications.
wxWidgets: 2.8.10,
Maxima version: 5.20.1, and
Lisp: SBCL 1.0.29
in PCLinuxOS-2009.2


I was playing around with bezier curve mathematics with the following entries.
/*Bernstein polynomial definition.
   Variables: i=polynomial index,
              n=degree of polynomial */
define ( B[i,n](t), expand( (n!/(i!*(n-i)!))*(1-t)^(n-i)*t^i) );

/*Bezier Curve definition.
   Variables: i=index of Bernstein polynomial and point p,
              n=degree of curve */
P(n,t) := sum( B[i,n](t) * p[i], i, 0, n );

/* I'm trying to generate forward difference equations but
    this is generating goofy math and I don't know why */
FDGen[k](n,t) := block([],
   for i:1 thru k step 1 do (
      if i = 1 then
       define( FD[i](n,t), P(n,t+h) - P(n,t) )
      else
       define( FD[i](n,t), FD[i-1](n,t+h) - FD[i-1](n,t) )
   ) );

/* Generate forward difference functions for degree 3 curve and
    look at what was generated.
    Symbolic output is lengthy so I did not include it here */
FDGen[3](n,t);
FD[1](n,t);
FD[2](n,t);
FD[3](n,t);

/* Look at the output for degree 3 and t=0 */
ratsimp(FD[1](3,0)),simpsum;
ratsimp(FD[2](3,0)),simpsum;
ratsimp(FD[3](3,0)),simpsum;

/* Output from last three entries*/
(%o20)  
(p[3]-3*p[2]+3*p[1]-p[0])*h^3+(3*p[2]-6*p[1]+3*p[0])*h^2+(3*p[1]-3*p[0])*h+p[0]
(%o21) (6*p[3]-18*p[2]+18*p[1]-6*p[0])*h^3+(6*p[2]-12*p[1]+6*p[0])*h^2-p[0]
(%o22) (6*p[3]-18*p[2]+18*p[1]-6*p[0])*h^3+p[0]

/* If I do the following, which should be the same as FD[1](3,0) */
block([ t:0 ], P(3,t+h) - P(3,t) );
/*I get*/
(%o37) p[3]*h^3+3*p[2]*(1-h)*h^2+3*p[1]*(1-h)^2*h+p[0]*(1-h)^3-p[0]

/* Or the simplified input and output*/
block([ t:0 ], ratsimp( P(3,t+h) - P(3,t) ) );
(%o40)  
(p[3]-3*p[2]+3*p[1]-p[0])*h^3+(3*p[2]-6*p[1]+3*p[0])*h^2+(3*p[1]-3*p[0])*h

As you can see from the output, I have an extra term involving p[0] for the
FD[i](3,0) function outputs that does not show up if I manually do the  
calculation. Am I doing something incorrectly, or is there a problem  
with Maxima?

I have set up another set of calculations using a different method  
that is working fine, so I don't really need this to function. I'm  
mostly interested in knowing if I'm doing something incorrectly or if  
Maxima has a problem.

Thanks in advance for any help you can provide.