This seems to be heading into the right direction. I’ve set up the following to calculate time in current deal stage:
1. for each deal stage you create a property called ‘time in X deal stage’.
2. you create a workflow that says: if deal is in stage X, copy value of ‘time in X deal stage’ into ‘time in current deal stage’. In the workflow, you set this up for each deal stage and voila!