           d_r =
             if o.r < (nodeArc.innerRadius + containerPadding) then Math.max(k_r, min_k_r)
             else if (nodeArc.outerRadius - containerPadding) < o.r then -Math.max(k_r, min_k_r)
-            else 0
+            else if (o.r - (0.5 * (nodeArc.innerRadius + nodeArc.outerRadius)) > 0) then 0 else 0
 
           d_thetaDirection = 0
           smallestAngleBetween = (source, target) ->

            x1 > nx2 or x2 < nx1 or y1 > ny2 or y2 < ny1

      ### TODO different force for each arc ###
      force = d3.layout.force()
        .nodes(nodes)
        .links([])
        .linkStrength(0)
        .size([layoutWidth(), layoutHeight()])

      force
        .gravity(forceGravity())
        .alpha(forceAlpha())
        .charge(forceCharge())
        .friction(forceFriction())
        .start()
      nodeEnterSelection.call(force.drag)

      ### Initialize directionality tracking vars ###
      nodes.forEach (o) ->

        ).attr "cy", (d) ->
          d.y
      lastAlpha = undefined
      masterForce.apply (force)->
        force.on "tick",(e) ->
          lastAlpha = ->
            e.alpha
          force.stop()
          $timeout( ->
            force.alpha(lastAlpha())
            runSimulationStep(e)
            ### TODO can you get the max of simulationSpeed() ? ###
          , slowMo())

    ### Kick it all off ###
    drawRadar()
]