Nope, it should be correct, but you don't need the loop if there's only one building.
You can just use Player - Add 1 to (Owner of Brankovina 0006 <gen>) Current gold.
The trigger will be much shorter to achieve the exact same goal (--> efficient).
(About the trigger failure, that's probably your fault: are you sure you did the exact same thing as kanadaj?)
Edit: Wait, I already figured out the problem.
You destroyed the building and created a new one, right?
Use variables.
Create a unit variable called "Brankovina" (or whatever) and every time you create the new tower, set the variable to last created unit.
Then, add 1 gold to the owner of Brankovina.
You're trying to give gold to someone who owns a building that doesn't exist anymore.
Sine nobody owns a tower that doesn't exist, nobody gets gold.
However, if you assign a variable to the new tower and give gold to the player who owns the building in that variable, he will get gold.
-
Gold Income
-

Events
-


Time - every 1.00 seconds of game time
-

Conditions
-

Actions
-


Player - Add 1 to (Owner of Brankovina) Current gold
Don't forget to assign the variable to the newly created tower!
I really hope you understand variables, as you cannot make maps without them.
Another method, which is even more efficient, requires an integer variable instead of a unit variable.
If a player destroys the tower, set the variable to the player who destroyed it and give gold to the player with that player number.
It's easier for warcraft, although it doesn't matter that much.