I'm honestly not sure what the problem is with the votes.
This is the code SMF uses to get poll options and votes:
$ignore = true;
$no_add = true;
$keys = array('id_poll', 'id_choice', 'label', 'votes');
$options = explode('|||', $row['options']);
$votes = explode('|||', $row['votes']);
$id_poll = $row['id_poll'];
for ($i = 0, $n = count($options); $i < $n; $i++)
{
$rows[] = array(
'id_poll' => $id_poll,
'id_choice' => ($i + 1),
'label' => substr(addslashes($options[$i]), 1, 255),
'votes' => (is_numeric($votes[$i]) ? $votes[$i] : 0),
);
}
The only problem I see is with the label - that "1" should be a "0" instead.
SMF sets it to 0 automatically if the value isn't numeric, so the IFNULL shouldn't make any difference.