I tried to simplify matters to see where things are going wrong, and thus updated the headers_remove with fixed values (no mysql lookup) as following

headers_remove = ${if or { { <{$spam_score_int}{1} } \
�� �� �� �� { <{$spam_score_int}{20}{$value} } \
�� �� �� �� { eq {0}{20}{$value} } \
�� �� �� �� } {X-Spam-Score:X-Spam-Report} }

the result,

message: virtual_domains router failed to expand "${if or { {
<{$spam_score_int}{1} } { <{$spam_score_int}{20}{$value} } { eq
{0}{20}{$value}} } {X-Spam-Score:X-Spam-Report} }": missing } at end of
condition inside "or" group

I also tried it without the {$value} on the second and third condition
inside the OR, and the result is

message: virtual_domains router failed to expand "${if or { {
<{$spam_score_int}{1} } { <{$spam_score_int}{20} } { eq {0}{20}} }
{X-Spam-Score:X-Spam-Report} }": missing } at end of string

Could someone please point out what I am doing wrong?

Thanks
SS