Thanks for your bug report. The /ban command used to /kick without checking if a nick was on channel. The check was added later due to users reporting that it was incorrectly issuing a /kick even if a user was not on channel. So, as much as I would like to cater for +D in this case, I would just be reverting changes that were previously requested. As you say, the only practical solution in this case is to issue a separate /kick since +D is essentially causing the channel to behave in a non-standard way.