Hi Dan,
Add assumptions on variables, might help with simplifications.
cutoff(t) = piecewise(t < 0, 0, t >= 0, t);
parity(k) = 1-2*mod(k,2);
f(t,k,d) = 1/factorial(d)*parity(k)*nchoosek(d+1, k)*cutoff(t-k)^d;
B(t,d) = simplify(symsum(f,k,0,floor(t)))
B(t, d) =

B(t,bad_d)
ans =

fplot(B(t,bad_d), [-1,2], 'LineWidth', 2);
I'm not sure what fplot is doing for t < 0, because it seems like B(t,0) is not well-defined for that situation.
I know that Matlab allows us to use the same variable as the variable of integration and in the limits of integration, but I always think it's more clear to integrate wrt to a different dummy variable.
IB(t,d) = simplify(int(B(tau,d),tau,0,t))
Warning: Unable to check whether the integrand exists everywhere on the integration interval.
Warning: Unable to check whether the integrand exists everywhere on the integration interval.
However, tau is still included in IB(t,d), which is a problem (and is troubling as a result).
Instead of treating d as a parameter in the integral, perhaps it will be better to enter it as a value and then integrate
fplot(int(B(tau,bad_d),tau,0,t),[-1,2])
Is it sensible to fplot the integral for t < 0?