While doing stuff with powercoin I found something dubious in the code (main.cpp)
if (vtx[0].GetValueOut() > GetBlockValue(pindex->nHeight, nFees))
that line checks that the block send to you, hasnt bigger subsidy that it's supposed to be. Now what this allows is to make client which subsidy is, say
[orginal subsidy] - 0.0000001.
This creates situation where hacked client only accepts its own shares, but the unhacked clients allow both unhacked and hacked shares. Now if blockchain generated by the hacked client is at any time longer than the blockchain of unhacked ones it naturally takes order. So you can constantly have chance to override every block created with PoW if you have 51% of the network hashspeed.
Thus allowing ppl with 51% mine each and every block.Situtation is somewhat equal with hybrid PoW/PoS coins, the race is just between the PoS blocks.
btw. I changed that greater-than to to equal and ran lvl 6 checks thru blockchain and didnt find any invalidated blocks because of it.