The torrent is supposed to be xxMB but I've downloaded xxMB (greater than the actual size), why does it do this?
There can be several reasons why this is happening, all of them normal and will happen with any client - it's just how BitTorrent works. The only difference between BitComet and most other clients is BitComet will show you how much data it has actually downloaded (#1, #2 and #3 below), where most other clients will only show you to data that has been saved or discarded due to failed hash checks (#1 and #2 below).
One of the following three possibilities happens when BitTorrent/BitComet receives a piece of data and checks it...
1) The data hash checks fine so is written to the disk.
2) The data fails the hash check (data is corrupt, incomplete or other ways unusable) so is disarded. When this happens the data will simply be requested and downloaded again. This amount is displayed as "rubbish data dropped" in the Summary section.
3) The data does not match the request, so it's discarded. This doesn't mean the data was bad, it just means it wasn't what BitTorrent/BitComet requested so it has to be thrown away (it's just how it works). The other client may have sent the wrong data or BitTorrent/BitComet doesn't know what to do with it. When this happens the correct data will be requested until the data matching the request is received.
In addition to this, there are also ACKs going on behind the scenes. For each packet of data that is received, BitTorrent/BitComet must send an acknowledgement packet to say the data has been received and is ready for the next one to be sent. This is just how TCP networking works. Although these packets are very small, they do add up.
If this is unacceptable to you, and judging from some posts about this subject a few people seem to think it is, it's recommended that you use a different method to download your data (HTTP. FTP etc) because this is an unavoidable fact of how the BitTorrent protocol works.
Changing clients won't cause you to download less bad or unrequested data, most of them just won't display how much you've actually downloaded. But you can do the following to attempt to minimize this amount...
° Use an IPFilter to stop your client from downloading from locations that are known to be bad and may force bad data upon you. Instructions for using an IPFilter for BitComet can be found here, or you could use PeerGuardian 2 (recommended) to block them from all your applications (not just BitComet).
° Limit the amount of peers you're connecting to. If you're connected to a giant swarm it makes sense that you'll receive more data that is bad or has not been requested, so although you may gain a few kB/s when connecting to several hundred peers, you may be dumping much more data and you're actually at a loss. The amount of peer connections can be adjusted here:
Options > Preferences > Connection > Advanced > "Maximum Connections per task"
Options > Preferences > Connection > Advanced > "Connections to keep per task"