This is fun, thanks @RokuMarkn for the pointer!
Here is a function for it (disclaimer: typed but not tested), with optional custom hump value. Non-destructive, though you may see mutator sub more befitting. Depending which way you want to lean when right on the 15-min cusp, may have to fix `fix()` to `cint()`:
function round_time(tm as object, cog = 1800) as object ' roDateTime -> roDateTime '
secs = tm.asSecodns()
secs = fix(secs / cog + 0.5) * cog
res = createObject("roDateTime")
res.fromSeconds(secs)
return res
end function