What happens when a miner does not claim all fees/generated coins? Suppose that a miner for some reason has the generation transaction of their blocks not take all the possible coins. This can happen for a variety of reasons, almost all of which are bugs:


An off-by-one error makes them think that their block should generate only 25 BTC when we're still at 50 BTC per block
Some bug prevents them from noticing a transaction fee; perhaps they were mining and updating the block in parallel using non-thread-safe code.
Depending on the answer to this question, they may actually decide to do this on purpose (though I can't think of an answer that would cause this in the vast majority of cases)


I can think of a few possible ways the network would respond, and none really seem ideal.


The block could be rejected, just as it would be if it had too much generated.
The block could be accepted and the extra coins available for whoever mines the next block (in which case, somebody may do this on purpose to encourage others to mine).
The block could be accepted and the extra coins lost.


What actually happens?
The block is accepted, and the coins are lost. Poor miner.

Here is a link to the part of the 0.6.3 source which checks this: https://github.com/bitcoin/bitcoin/blob/v0.6.3/src/main.cpp#L1362

Also, this has effectively happened before; block #124724 claimed one satoshi less it than could have.