This might be somewhat masochistic, but I always like to write the code
myself for any kind of rounding or discretization.  I would just make a
function with the pseudocode:

round <- function(timestamp)
{
time <- as.seconds(timestamp)
remainder <- time % 300
if(remainder >= 150) time <- time + (300 - time % 300)
else time <- time - (300 - time % 300)
return as.timestamp(time)
}

You could then 'apply' this to all of your timestamps.  I would do this
because it appeals to the love of math in me, not necessarily because it's
the easiest solution.

Cheers,
-David

	[[alternative HTML version deleted]]

