You will have to be patient to sync a node.
It took me 60 hours to sync Rinkeby in fast mode. There were 125M state entries and the folder size was 38GB after synchronization. With time, both these numbers will grow.
You can type eth.syncing in Geth console. If you get 'False' as output, it means that syncing is finished. Otherwise you'll get various ...
You basically already did it. As long as block reward will worth it, miners will include invocation of your function into every block they mine.
However, I see minor problem with your code. As long as all token balances and transfer amounts have to be integer, your block reward has to be integer as well.
When you sync your node, It fetches data previously written on the Blockchain. Hypothetically, let's say that:
Node is currently syncing and had fetched the 100 first blocks
the first time your account was transferred some tokens were at the block
In this scenario, at that precise point, if your node is still syncing, it won't have enough data to say ...