i never undertip for lousy service. we all have bad days, and within those bad days, we all have bad moments. the majority of people who work a 9-to-5 don't put in eight great hours of work every day. you might be super productive and highly motivated for a few hours, and then slack for a few hours, and then your kid calls (he got in trouble at school!) or your wife calls (she's sick, you're cooking dinner tonight!) and suddenly, your mind is in a different place.
a waiter or waitress might serve forty tables (and 150 people) in one FT shift, and of those tables, thirty-nine of them might have received excellent service. your table didn't, for whatever reason: the food was a little cold, your drink didn't get refilled the instant it went empty, the bill wasn't split up ever so perfectly ("no, i'm paying for the side of fries, those two are splitting the onion rings!"), and so on.
for all you know, the service was lousy for reasons beyond the waiter's control (lazy co-workers); or for other reasons (overworked, fatigue, family problems, health, etc). i suggest giving them the benefit of the doubt and hoping they do better the next time. in the end, the service probably wasn't that bad, and they're still serving you and cleaning up after you.
oh, and by the way: i'm sure there have been PLENTY of times when you, the customer, weren't exactly fun to wait on...especially when you let your kids order for themselves.