Why don't the timestamps in the block chain always increase? The timestamps starting at block 145044 are:

145044: 2011-09-12 15:46:39     
145045: 2011-09-12 16:05:07 
145046: 2011-09-12 16:00:05 // ~5 minutes before prior block
145047: 2011-09-12 15:53:36 // ~7 &amp; ~12 minutes before 2 prior blocks
145048: 2011-09-12 16:04:06 // after 2 prior blocks but still before 145045


How does this occur?
From the wiki:


  A timestamp is accepted as valid if it is greater than the median
  timestamp of previous 11 blocks, and less than the network-adjusted
  time + 2 hours. "Network-adjusted time" is the median of the
  timestamps returned by all nodes connected to you.
  
  Whenever a node connects to another node, it gets a UTC timestamp from
  it, and stores its offset from node-local UTC. The network-adjusted
  time is then the node-local UTC plus the median offset from all
  connected nodes. Network time is never adjusted more than 70 minutes
  from local system time, however.


It's not obvious that there aren't any problems with this way of timestamping. See the blog post Timejacking &amp; Bitcoin and the discussion about it here.