@duncanbeevers This `if` keeps confusing me every time I read it :-) The reason is that you check the `viewValue` but this is dependent on the `active` state of the button.

Why do you think of something like:
````js
var isActive = element.hasClass(buttonsCtrl.activeClass);
if (!isActive || angular.isDefined(attrs.uncheckable)) {
     var viewValue = !isActive ? scope.$eval(attrs.btnRadio) : null;
     ....
}
````