I've updated my own local copy of the camera class, using the release version as a base.
The general idea I used was as follows:
When you want to move the camera, you call a method called SetTargetLocation, passing a target location and a time-to-move. This sets up some member variables:
public void SetTargetPosition(Vector2 targetPosition, float TimeInSeconds)
StartMovePosition = Position;
TargetMove = targetPosition;
CurrentMoveTime = 0;
EndMoveTime = TimeInSeconds;
Then, in Update, it's as easy as:
CurrentMoveTime += (float)gametime.ElapsedGameTime.TotalSeconds;
if (Position != TargetMove)
Position = Vector2.SmoothStep(StartMovePosition, TargetMove, CurrentMoveTime / EndMoveTime);
If you want to instantly move the camera, just pass in a time-to-move of 0 (but it won't take effect until the next update cycle).
Copy and paste for Zoom and Rotation, and voila!
I'll see if I can get it cleaned up and submit a patch.