Suppression of negative Elapsed in Stopwatch

There was a bug (https://connect.microsoft.com/VisualStudio/feedbackdetail/view/94083/stopwatch-returns-negative-elapsed-time) in the old Microsoft .NET versions: the Stopwatch.Elapsed property could return negative value for a small time period. It was be fixed in .NET 4.0, but it can be still reproduced by the current Mono version.
For example, this can be reproduced during dynamic processor frequency scaling (see http://en.wikipedia.org/wiki/SpeedStep).