I think it's harmful how the BBC show Sherlock whitewashes sociopaths.
In the show, Sherlock Holmes repeatedly calls himself a "high functioning sociopath". He gets bored easily and fires a gun at the wall. He ignores social graces and says rude things.
But he also sacrifices his own life (takes on a dangerous mission where he's expected to be killed within 6 months) to keep Watson safe. He travels to the Middle East to save his friend / beard "The Woman", even though there is nothing to be gained for himself.
This is not how sociopaths behave! Their gruff exterior isn't hiding a heart of gold. They will not put themselves at risk to save your life.
I think the popularity of the show speaks to the number of viewers who probably dealt with a loved one that behaves like Sherlock. The show is wish fulfillment that their loved one actually will rise to the occasion and behave in selfless loving ways. After all, they saw it on Sherlock! Maybe the viewer's own sociopath will also completely reform one day!