Presumably if you're searching for 2 keys, do you want two answers?
If you want both answers, there's little point in creating a massively bloated interface passing in two values, two result pointers and a node pointer.
If you're only after 'whichever is first', then 'first' is a vague notion depending on how you decide to traverse the tree.
Code:
if ( d1 < data && d2 < data ) goLeft
if ( d1 > data && d2 > data ) goRight
Otherwise, you've found the deepest common ancestor,
because you now need to follow left and right separately.