The problem is one that gets me frequently. The error handling bits of the template parser are not very good

, so the parser can get very confused. It isn't really the parens that are unbalanced but is instead a missing comma.
The corrected template is below with missing comma is in large font bold.
Code:
program:
test(
or(
strcmp(field('#keep_read'), 'yes', '', 1, ''),
strcmp(field('#keep_read'), 'series incomplete', '', 1, ''),
strcmp(field('#read_status'), 'N', '', 1, '')
),
'Yes',
'No');
Glad you got it working.