As bland as it may sound, DFT doesn't "know" ionic charges, all it knows are electron densities in a certain location and we as the human looking at the calculation result decide: "OK, this charge distribution looks like the bond is ionic [or covalent]".
The proper way to assign "correct" charges to DFT results in particular or quantum chemistry results in general is debated quite emotionally, but the approaches which have probably the most analytic appeal to them are Bader's Atoms in Molecules (AIM) method and derivatives thereof:
The only possibilty that comes to my mind is to use double hybrid methods or MN15 and MN15 and PW6B95 und PW6B95D3. I am not so sure tough...Hope that could helps and you could use some form or Linux with NViDIA acceleration with the GPUS K-40 oder K-60.