Change the event into A unit Start the effect of an ability.
Move loc1 outside loop and put it in the beggining of the trigger and change casting unit to triggering unit.
Create 1
dummy unit at that loc1 for (Triggering Player).
Create new TempDummyUnit variable and set last created unit to that variable.
Add that ability to TempDummyUnit.
Change Integer A into udg_variable (create new TempInt variable of type integer and use that).
Change loc2 to (Real(TempInt)*90 degrees).
Remove that line where you add ability to paladin.
Order temp dummy unit to cast carrion swarm at loc2.
Move cleaning location (loc2) inside loop at the end.
Done.
Why this does not work is because paladin has cast point (.300 i believe) and ot takes him some time to cast the spell. When you order him to cast this 4 times, he starts casting, but immediately he is ordered to cast it again.
The dummy unit has 0 casting point, so he has time to cast spell all 4 times.