Specifically, suppose you computed tf--picking whatever signs for the eigen vectors.
Then, rather than compute df by looking at the eigen vectors of dd matrix, you can compute df directly
df = dt*tf*ff-inverse (where ff-inverse is the inverse of a diagonal matrix and so it will just be another diagnonal matrix with the entries being reciprocals of the ff)
This way, you are guaranteed to have dt be reconstructible by SVD equation (and it also saves the trouble of computing eigen vectors twice).
((Here is the simple derivation of that formula above:
dt = df * ff * tf' (SVD equation)
dt*tf = df * ff * tf' * tf = df*ff (the last product is I since tf is orthonormal)
dt*tf*ff-inverse = df * ff * ff-inverse = df
Here is a link which has a worked out example done this way