Question: Strange things happens when m changes! WHY?

Strange thins happens when I choose m=2 and m=3.The whole PDE seems normal and when I let m=2,the maximum is only 12,but when I choose m=3,the maximum goes up to 10^14. This puzzles me.Who can tell me why? How can I get the right answer?  many thanks!

the procedure is as follows:

> population := proc (m, T)  local i, PDE, initialvalue, IBC, pds, Q, q, f, k;  PDE := diff(p(a, t), a)+diff(p(a, t), t) = -p(a, t); initialvalue := a ->a ; IBC[0] := {p(0, t) = 0, p(a, 0) = initialvalue(a)}; pds[1] := pdsolve(PDE, IBC[0], numeric, time = t, range = 0 .. 12); q[1] := pds[1]:-plot3d(t = 0 .. T, a = 0 .. 12, axes = boxed, orientation = [110, 60]); for i to m-1 do Q[i] := subs(pds[i]:-value(t = i*T, output = listprocedure), p(a, t)); k[i] := .1; f :=  piecewise(a < T, k[i], T <= a, Q[i](a)) ; IBC[i] := {p(0, t) = 0, p(a, i*T) = f(a)}; pds[i+1] := pdsolve(PDE, IBC[i], numeric, time = t, range = 0 .. 12); q[i+1] := pds[i+1]:-plot3d(t = T .. (i+1)*T, a = 0 .. 12, axes = boxed, orientation = [110, 60]) end do; plots[display](seq(q[i], i = 1 .. m)) end proc;
> m := 3; T := 0.1;population(m,T);

>m:=2;T:=0.1;population(m,T);

Please Wait...