anchor.diff:  		    beside(floating(text("-")), beside(D, floating(text("."))));
   		Args ->
                       Sep = get_separator(Args, Ctxt1, ","),
  -                    As = case wrangler_syntax:atom_value(N) of 
  -                             spec ->
  -                                 lay_spec_args(Args, Ctxt1);
  -                             _ -> 
  -                                 seq(Args, floating(text(Sep)), Ctxt1, fun lay/2)
  -                         end,
  -                    D = lay_elems(fun wrangler_prettypr_0:par/1, As, Args, Ctxt),
  -                    D2=beside(lay(N, Ctxt1), beside(text("("), beside(D, floating(text(")"))))),
  -		    beside(floating(text("-")), beside(D2, floating(text("."))))
  +                    D2= case wrangler_syntax:atom_value(N) of 
  +                            spec ->
  +                                case spec_need_paren(Ctxt1#ctxt.tokens) of 
  +                                    true ->
  +                                        As =lay_spec_args(Args, Ctxt1),
  +                                        D = lay_elems(fun wrangler_prettypr_0:par/1, As, Args, Ctxt),
  +                                        beside(lay(N, Ctxt1), beside(text("("), beside(D, floating(text(")")))));
  +                                    false ->
  +                                        As =lay_spec_args(Args, Ctxt1),
  +                                        D = lay_elems(fun wrangler_prettypr_0:par/1, As, Args, Ctxt),
  +                                        wrangler_prettypr_0:horizontal([lay(N, Ctxt1), D])
  +                                end;
  +                            _ -> 
  +                                As=seq(Args, floating(text(Sep)), Ctxt1, fun lay/2),
  +                                D = lay_elems(fun wrangler_prettypr_0:par/1, As, Args, Ctxt),
  +                                beside(lay(N, Ctxt1), beside(text("("), beside(D, floating(text(")")))))
  +                        end,
  +                    beside(floating(text("-")), beside(D2, floating(text("."))))
   	    end;
   	binary ->   
   	    Ctxt1 = reset_check_bracket(reset_prec(Ctxt)),
  
positive.code:     wrangler_prettypr_0:par(Ds, -2).
  
  lay_sig_type(SigType,Ctxt) ->
      %%wrangler_io:format("SigType:\n~p\n", [SigType]),
      T1 = wrangler_syntax:revert(SigType), 
      case T1 of 
          {type, _Line, bounded_fun, [T, Gs]} ->
  
negative.code: 
  lay_union_elem(T, Ctxt) ->
      beside(text(" | "),lay_type(T, Ctxt)).
  
  spec_need_paren([])->true;
  spec_need_paren(Toks) ->
      [_T, T1| _Ts] = lists:dropwhile(fun({atom, _, 'spec'}) ->
                                             false;
                                         (_) ->
                                              true
                                     end, Toks),
      element(1, T1) == '('.
      
  