I recognise that `tap` is sometimes a good practice, could be, but here i sincerely think that the use of `tap` is not clear. You can write this method just as:

```ruby
self.minor = 0 if term == :major
self.patch = 0 if term == :major || term == :minor
self.pre   = nil if [:major, :minor, :patch].include? term
self.build = nil if [:major, :minor, :patch, :pre].include? term

self
```
It's clearer that the return value of the method is just `self`.