Вращение элемента при наведении, с остановкой - на jquery

При наведении элемент вращается, с остановкой в том месте когда курсор покидает элемент - без возврата в исходное состояние.

$(document).ready(function () {
var $ = jQuery;
// функциая, которая вычисляет угол, на который повернут объект
function getRotationDegrees(obj) {
var matrix = obj.css("-webkit-transform") ||
obj.css("-moz-transform") ||
obj.css("-ms-transform") ||
obj.css("-o-transform") ||
obj.css("transform");
if(matrix !== 'none') {
var values = matrix.split('(')[1].split(')')[0].split(',');
var a = values[0];
var b = values[1];
var angle = Math.round(Math.atan2(b, a) * (180/Math.PI));
}
else {
var angle = 0;
}
if(angle < 0) angle +=360;
return angle;
}
var timer;
// указываем нужный нам блок, который будет вращаться при наведении курсора
$(".demo1").hover(function() {
var angle = getRotationDegrees( $(".demo1") );
timer = setInterval(function() {
angle -= 2; // указываем, на какой угол вращать объект, в градусах
$(".demo1").css({
'transform': 'rotate(' + angle + 'deg)'
});
}, 50); // указываем время, в милисекундах
},
function() {
timer && clearInterval(timer);
});
});

Ссылки и благодарности

Скрипт с сайта foxartbox. За что им огромное и человеческое.