This problem only happens when the control is set to 'm_checkbox' as an unselected value is returned as '0' in the $_POST array. With a control of 'multidrop' any unselected values do not appear in the $_POST array.
The fix is quite simple. Edit file 'std.validation.class.inc' and at line 123 you should see the following:
if (preg_match('/(set|array|varray)/i',$fieldspec['type'])) {
// convert $fieldvalue array into a string with comma separator
if (is_array($fieldvalue)) {
$fieldvalue = implode($fieldvalue, ',');
} // if
} // if
Simply change it to the following:
if (preg_match('/(set|array|varray)/i',$fieldspec['type'])) {
// convert $fieldvalue array into a string with comma separator
if (is_array($fieldvalue)) {
foreach ($fieldvalue as $key => $value) {
if (empty($value)) {
unset($fieldvalue[$key]);
} // if
} // foreach
$fieldvalue = implode($fieldvalue, ',');
} // if
} // if
I shall include this fix in the next release.