anchor.diff:    void placeBy(
       HtmlElement el1,
       HtmlElement el2,
  -    { double left: 0, double top: 0, double gravity_top: 0, double gravity_left: 0 }
  +    { double left: 0.0, double top: 0.0, double gravity_top: 0.0, double gravity_left: 0.0 }
     ) {
       
       var el2_pos = getPosition(el2);
       var el1_dim = getDimensions(el1);
       var el2_dim = getDimensions(el2);
   
  -    var pos_offset     = { 'x': el2_dim['x']*left , 'y': el2_dim['y']*top };
  +    var pos_offset     = { 'x': el2_dim['x']*left, 'y': el2_dim['y']*top };
       var gravity_offset = { 'x': el1_dim['x']*gravity_left , 'y': el1_dim['y']*gravity_top };
       var new_pos        = { 'x': pos_offset['x']+el2_pos['x']-gravity_offset['x'], 'y': pos_offset['y']+el2_pos['y']-gravity_offset['y'] };
  +
  +    var base_offset_for_el = { "x": base_offset["x"]*el1_dim["x"], "y": base_offset["y"]*el1_dim["y"] };
  +    if(new_pos["x"] < el2_pos["x"])
  +      base_offset_for_el["x"] = -base_offset_for_el["x"];
  +    if(new_pos["y"] < el2_pos["y"])
  +      base_offset_for_el["y"] = -base_offset_for_el["y"];
  +    
  +    new_pos = { "x" : new_pos["x"] + base_offset_for_el["x"], "y" : new_pos["y"] + base_offset_for_el["y"] };
   
       placeAt(el1, new_pos['x'], new_pos['y']);
   
  
positive.code:   }
  
    void placeByTopRight(HtmlElement el1, HtmlElement el2) {
      placeBy(el1, el2, left: 1, gravity_left: 1);
    }
  
    void placeByBottomLeft(HtmlElement el1, HtmlElement el2) {
      placeBy(el1, el2, top: 1, gravity_top: 1);
    }
  
    void placeByBottomRight(HtmlElement el1, HtmlElement el2) {
      placeBy(el1, el2, top: 1, left: 1, gravity_left: 1, gravity_top: 1);
    }
  
    void placeAboveTopLeft(HtmlElement el1, HtmlElement el2) {
      placeBy(el1, el2, gravity_top: 1);
    }
  
    void placeBelowBottomLeft(HtmlElement el1, HtmlElement el2) {
      placeBy(el1, el2, top: 1);
    }
  
    void placeAboveTopRight(HtmlElement el1, HtmlElement el2) {
      placeBy(el1, el2, left: 1, gravity_left: 1, gravity_top: 1);
    }
  
    void placeBelowBottomRight(HtmlElement el1, HtmlElement el2) {
      placeBy(el1, el2, top: 1, left: 1, gravity_left: 1);
    }
  
  
  }
  
negative.code: part of nest_ui;
  
  class PositionManager {
  
    Map<double> base_offset = { "x": 0, "y": 0 };
  
    Map getPosition(HtmlElement el) {
      var pos = el.getBoundingClientRect();
  