# GraphPlot labels overlapping

If I plot the following graph with an EdgeRenderingFunction, the position of both the labels are at dead center, and with a large graph I have the labels completely overlapping each other:

GraphPlot[{{1 -> 2, "a"}, {2 -> 1, "b"}},
DirectedEdges -> True, VertexCoordinateRules -> Automatic, VertexLabeling -> True,
EdgeRenderingFunction -> ({Blue, Arrow[#1, 0.1],
If[#3 =!= None, Text[Style[#3, Medium], Mean[#1], Background -> White], {}]} &)]


Is there a way to position the labels, say, at 60% down the edge instead of dead center, so that the labels don't have a chance to overlap? I've been toggling with Mean[#1] above but can't get this right positioning.

Edit: improved formatting

-
Edit: The following is a hackish way to do it: If[Length[#1] > 2, Mean[#1] + (#1[[1]] - #1[[2]])*0.5, Mean[#1]], but I would be open to more suggestions. –  user10245 Oct 28 '13 at 5:36
Also hackish: Mean[#1[[4 ;;]]] –  Simon Woods Oct 28 '13 at 14:09

Graph[{1 \[DirectedEdge] 2, 2 \[DirectedEdge] 1},