anchor.diff:  	
   	(when (member :rolling mode)
   	  
  -	  (setf (surface-parameters-rho params)
  +	  (setf rho
   		(* (surface-rho this) (surface-rho that)))
   	  
  -	  (setf (surface-parameters-rho2 params)
  +	  (setf rho2
   		(* (surface-rho2 this) (surface-rho2 that)))
   	  
  -	  (setf (surface-parameters-rhoN params)
  +	  (setf rhoN
   		(* (surface-rhoN this) (surface-rhoN that)))))
       params)
   
  
positive.code: 	 (b2 (geom-get-body o2)))
      
      ;; At least one of these needs a body or movement shouldn't be happening...
      (unless (and (null b1) (null b2))
  
        ;; create space to hold the collisions...
        (with-foreign-object (contact '(:struct Contact-struct) *default-max-contacts*)
  	
  	(let* ((surf (make-instance 'surface-parameters :pointer (cffi:foreign-slot-pointer contact '(:struct contact-struct) 'surface)))
  	       (geom (print (cffi:foreign-slot-pointer (print contact) '(:struct ode::contact-struct) 'geom)))
  	       (geom-obj (make-instance 'contact-geometry :pointer geom)))
  	  (combine-physics-objects o1 o2 surf)
  
  
  	(let ((num-contacts (collide o1
  				     o2
  				     *default-max-contacts*
  				     geom
  				     (cffi:foreign-type-size '(:struct contact-geometry-struct)))))
  
  	  (unless (zerop num-contacts)
  	    
  	  (format t "geo pos: ~A!~%" (cffi:foreign-slot-value  geom '(:struct contact-geometry-struct) 'pos))
  	  (format t "geo depth: ~A!~%" (cffi:foreign-slot-value geom '(:struct contact-geometry-struct) 'depth))
  	  (format t "g1 depth: ~A!~%" (cffi:foreign-slot-value  geom '(:struct contact-geometry-struct) 'g1))
  	  (format t "g2 depth: ~A!~%" (cffi:foreign-slot-value  geom '(:struct contact-geometry-struct) 'g2))
  
  	    (let* ((world (cond (b1 (body-get-world b1))
  				(b2 (body-get-world b2))
  				(t (error "Can't find a world for these two geometries/bodies!"))))
  		   (contact-group (ode::contact-group world)))
  	      
  	      (dotimes (i num-contacts)
  		(print (joint-attach (print (joint-create-contact world contact-group contact)) b1 b2)))))))))))
  
  
negative.code: 
  (defmethod combine-physics-objects ((this geometry) (that geometry) params)
  
      (cffi:with-foreign-slots ((mode mu mu2 rho rho2 rhoN bounce bounce-vel soft-erp soft-cfm motion1 motion2 motionN slip1 slip2)
  			      params
  			      (:struct surface-parameters-struct))
        
  
        (setf mode
  	    (union (surface-Mode this) (surface-Mode this)))
  
        
        
        (setf mu       
  	    (max (surface-mu this) (surface-mu that)))
        
  	(when (member :mu2 mode)
  	  (setf mu2
  		(* (surface-mu2 this) (surface-mu2 that))))
  	
  	(when (member :bounce mode)
  