I think there is a minor bug in task_more.inc.php
An else branch is missing as showed below. Without that else the resolved_version is set to 0 always regardless of the choosen version:
### resolve version ###
$rv= get('task_resolved_version');
if((!is_null($rv)) && ($rv != '__dont_change__') && ($task->resolved_version != $rv)) {
if($rv && $rv != -1) {
if($v= Task::getVisibleById($rv)) {
if($v->isMilestoneOrVersion()) {
$task->resolved_version= $rv;
$change= true;
}
}
else {
continue;
}
}
else { <--- add this line
if($rv == -1) {
$task->resolved_version= $rv;
$change= true;
}
else {
$task->resolved_version= 0;
$change= true;
}
} <--- add this line
}