Personally, if you are not going to use your dog for breeding - and you shouldn't unless it has been throughoughly checked for eye, hip, heart and any other problems that are specific to that breed and it is NOT a crossbreed!
I can see no reason for not castrating. Ideally around 6 - 12 months, a lot depends on the breed/size/maturity of the dog involved and that they have two fully descended testicles!!!
Castrating does not only work on behaviours, there are health benefits related to it too, along with the fact that an uncastrated dog can be a quite frustrated/stressed dog - even though all outwardly appears OK.
In natural circumstances, dogs would be roaming around, fighting/challenging other dogs, scent marking, mating regularly with females and generally fulfilling all their doggy instincts. Because we keep our dogs in our homes in what technically is 'unnatural' to a dogs instincts (although they have adapted extremely well), all those needs are going unfulfilled, hence the problems some people experience. Think male teenagers and what that encompasses and we wonder why our dogs are not totally content, hump cushions and act aggressively.
By castrating, the testosterone levels dropped, the frustrations of having these 'needs' unfulfilled will diminish and you end up (usually), with a relaxed, more contented dog.
However, there are no guarantees and if you are castrating purely because you have behaviour problems, do remember that if a behaviour is ingrained, it will take longer to stop and needs to be worked on along with some sort of behaviour plan in tandem with the castration.
Generally, it takes around 2/3 months before changes fully take effect and testosterone levels drop.
From a rescue point of view .EVERY dog should be spayed or castrated.