As I understand it, generic flocking is generated by a weighted-average of:
- an alignment vector, which is an average of the alignment vectors of
those around you
- a separation vector, which is a vector pointing away from those around you
- a cohesion vector, which is a vector pointing towards the local group center
There are different ways to calculating these vectors and different behaviours result when they are given different weights. There are also different ways of combining the combined, weighted-average vector with the current velocity vector.
If I read your question correctly, you would like your flock to circle or flit around a central point. To do this, you've created a fourth vector, which is
- a target vector, which is a vector pointed towards a particular destination point
Now, you can probably see where this is going... the behaviour of your flock is the result of the weights placed on each vector. If the weight you've placed on the target vector is too small relative the others, your flock will be focusing on flocking instead of attacking.
Therefore, assuming I've outlined flocking correctly, and you've programmed things in a reasonable way, you'll be wanting to try different combinations of weights until you find a behaviour that suits your needs.