Something like FLOOR(MINUTE([Time In]),30) might be what you’re looking for…? I think this should read the Minutes value from [Time In] as an integer (assuming it’s a Time data type), then round that number to a multiple of 30 (so in the possible range of 0 - 59, that should be limited to 0 or 30).
Do you know why this formula works with a delay? That is, rounding is triggered only after the string is saved, and if the string contains calculations referring to this rounding, then the calculation will be based on unrounded time.
Do you know why this happens? How to fix it? I will be very grateful!