Hi Pengfei,
I'm glad at least some of my fixes worked! I'm not sure whats going on with your b-value distributions. I've performed the same analysis for my absorption spectra and I dont see anything like the peaks at ~40 km/s that you do (see attached). At the high end, I do see a very slight excess of absorbers at the high end, but again nothing like what you're showing.
This leads me to the conclusion that the fitting process works well for spectra generated like mine, but behaves somewhat poorly for yours. Having looked briefly at one example lightray of yours (offlist) I can definitely see that yours looks qualitatively different than mine and has a lot more lines and those lines are much narrower, although having little idea what exactly you're looking at I can't really extrapolate beyond that.
Going forward I can relatively quickly add something that throws away lines with these parameters as they're clearly unphysical; however, I'm somewhat uncomfortable doing that as its probably an indication of a larger problem for a certain class of spectra. I wish I could guarantee that I could look at this and completely fix it for you, but I really don't have more time to devote to this project at the moment. If you're interested in helping look at it I'd be more than happy to point you in the right direction and we can chat offlist/in the irc. Otherwise I'll update the pull request to just remove those lines, and heavily comment it so any future user can remove/play around with it if they're unsatisfied with this stop-gap measure.
-Hilary