Make New Reversed AnimationClip From Existing Clip

I know you can make an object play in reverse using the speed parameter and a negative number. What I want to do is instead make a new reversed clip from an existing clip on Awake and have it available for the whole level without continually reversing the forward clips and the syntax is evading me for this. The following code is wrong but you will get the idea

var myNewReversedClip = new AnimationClip(animation["animName"].speed = -1.0);

I think you can do this by manually looping over all AnimationCurve's in the AnimationClip, querying all the keys on each curve, and then making new curves where you insert the keys in reverse.