What makes you think trapz isn't working? Certainly it's simple enough to do a cumulative summation approximation directly as well...
fl=dt*cumsum(f);
if dt is constant, otherwise
fl=cumsum(f.*dt);
Not as an accurate an approximation as a trapezoidal approx, though...