Value function callback behavior not as expected

The manual states:

Value function callback is a user function allowing running complex user actions whenever the control value is changed.

However, it is not the case. If I create a fader controller with min value of 1 and max of 10, set up a function

function actOutputValue(valueObject, value)
    print("value: "..value)
end

and I slowly turn the pot, I will see the following:

5122926 lua: value: 0.0
5123916 lua: value: 0.0
5124526 lua: value: 0.0
5124996 lua: value: 0.0
5125566 lua: value: 0.0
5126116 lua: value: 0.0
5126436 lua: value: 0.0
5126696 lua: value: 0.0
5126886 lua: value: 1.0
5126886 sendMessage: port=1, channel=16, type=cc7, parameterNumber=11, midiValue=1
5127046 lua: value: 1.0

As you can see, it took it 9 little movements to arrive from 0 to the next value of 1. The function is being called even when there was no change. Even by tapping multiple times the pot, I will see the function is being called on some of those.

As a walk around, The function parameterMap.onChange (valueObjects, origin, midiValue) does work indeed only when a change of value occurs, however, this forces us to read the valueObjects and try to find out if it is the one we are interested in, causing an unnecessary overhead.

Additionally, one question: What is happening behind the code when a patch is loaded? The control is updated with a value and then related value function callback is called?