anchor.diff:  lay_1(Node,Ctxt) ->
       case refac_syntax:has_comments(Node) of
         true ->
  -	  D1 = lay_2(Node,Ctxt),
  -	  D2 = lay_postcomments(refac_syntax:get_postcomments(Node),D1),
  -	  lay_precomments(refac_syntax:get_precomments(Node),D2);
  -      false -> lay_2(Node,Ctxt)
  +	    {{NodeStartLn, _}, {NodeEndLn, _}}= refac_util:get_range(Node),
  +	    D1 = lay_2(Node,Ctxt),
  +	    PreCs = refac_syntax:get_precomments(Node),
  +	    PostCs= refac_syntax:get_postcomments(Node),
  +	    D2 = case PostCs of 
  +		     [] ->
  +			 D1;
  +		     _ ->
  +			 PostCsLn = element(1, refac_syntax:get_pos(hd(PostCs))),
  +			 case PostCsLn > NodeEndLn+1 of
  +			     true ->
  +				 lay_postcomments(refac_syntax:get_postcomments(Node),above(D1, text("")));
  +			     false ->
  +				 lay_postcomments(refac_syntax:get_postcomments(Node),D1)
  +			 end
  +		 end,
  +	    case PreCs of
  +		[] -> D2;
  +		_ -> LastPreC = lists:last(PreCs),
  +		     PreCLn=element(1, refac_syntax:get_pos(LastPreC)),
  +		     LastPreCLines = length(refac_syntax:comment_text(LastPreC)),
  +		     case NodeStartLn > PreCLn+LastPreCLines of
  +			 true ->
  +			     lay_precomments(refac_syntax:get_precomments(Node),above(text(""),D2));
  +			 false ->
  +			     lay_precomments(refac_syntax:get_precomments(Node),D2)
  +		     end
  +	    end;
  +	false -> lay_2(Node,Ctxt)
       end.
   
   %% For pre-comments, all padding is ignored.
  
positive.code: lay_elems_1(Fun, [{D,{_SLn,ELn}}| Ts],[],_LastLn) ->
      lay_elems_1(Fun, Ts,[[D]],ELn);
  lay_elems_1(Fun, [{D,{SLn,ELn}}| Ts],[H| T],LastLn) ->
      case (SLn == 0) or (LastLn == 0) of
        true -> lay_elems_1(Fun, Ts,[[D],H| T],ELn);
        false ->
  	  case SLn - LastLn of
  	    0 -> lay_elems_1(Fun, Ts,[H ++ [D]| T],ELn);
  	    1 ->
  		lay_elems_1(Fun, Ts,[[above(horizontal(H),D)]| T],ELn);
  	    _ -> lay_elems_1(Fun, Ts,[[D],H| T],ELn)
  	  end
      end.
  nil() -> text(" ").
  
  
negative.code: lay_elems(_Fun, _ElemDocs,[]) -> null;
  lay_elems(Fun, ElemDocs,Elems) ->
      ARanges = lists:map(fun (A) ->
  				{get_start_line(A), get_end_line(A)}
  			end,
  			Elems),
      lay_elems_1(Fun, lists:zip(ElemDocs,ARanges),[],0).
  