Reading <co type> firm = position 2
Reading <co type> firms = position 2
So definitely a penalty with any combo of London and firms.
I hate negative SEO - especially on remote links - it's just STUPID Google. Fair enough on over optimising onsite content, which makes text unnatural to read by humans. But for backlinks, negative SEO makes no sense other than to encourage regular website owners pay for professional SEO services to get them out of penalties!
Anyone see the SEOmoz whiteboard Friday episode that some said the only people who can bring down Googles search monopoly are Google themselves? Well you are doing it Google!