This is weird. I created a field called "MyRating" which is a string. Even though it is a string, I put in numeric integer values to rate songs. For songs I haven't rated, I use a value "-1". When I create a smartlist for unrated songs where "MyRating" "is" "-1", it doesn't work - I get everything. If I change it to "4" or "5", etc, it works properly, but "-1" doesn't. Does the rules engine interpret this as "True" or something rather than the character string "-1"?
EDIT: so I solved the problem by changing the datatype from string to integer. But I still think it's odd that the smartplaylist rule didn't match the string "-1" correctly.