Rotate a specific rotation

I'm banging my head over this one, I've worked on it for the past five hours thinking that it really shouldn't be this hard but I'm finally willing to admit that it has me stumped.

I am working on platformer type game where I have a rigidbody that only moves in the XY plane. I would like this rigidbody to be able to flip over a horizontal line, so it basically rotates 180 degrees over the x and y axis. I would also like that rigidbody to face the other direction, or rotate 180 degrees on the y axis. This rotation should happen over time so I can't just assign the rotation directly.

I have tried applying the rotation through the rigidbody (MoveRotation), transform (Rotate), manually lerping, and I've even tried adding a ConfigurableJoint to it and used Target Rotation and a Angular X/YZ drive to get the correct rotation. I've come up short with all of these methods in one way or another.

Can anybody give me a quick hint in how I should proceed?

Thank you, Justin

interpolation: y = y0 + (x-x0)(y1-y0/x1-x0) where y0 is the initial value and y1 is your final value. x is you time at that point and x0 is the initial time, and x1 is the final time. Implementation would be somewhat like this:

a5 = a5 + (a5New - a5) * 0.005;

where a5New is your final rotation angle and a5 is the updating angle.

I ended up using the configurable joint, it provided an easy way to interpolate values and I don't need to keep track of everything in Update()