Work to date on negotiation protocols has focused almost exclusively on defining contracts consisting of one or a few independent issues and relatively small number of possible contracts. Many real-world contracts, by contrast, are much more complex, consisting of multiple interdependent issues and intractably large contract spaces. This paper describes a simulated annealing based approach appropriate for negotiating such complex contracts that achieves near-optimal outcomes for negotiations with binary issue dependencies.