When is their birthday?
Javascript (ES6), 121 120 119 bytes
(y,s,d)=&gt;[(d=new Date(y,m=s[2]=='s'?1:'r.sune0oapti'.search(s[4]||0),23+d-'343322110012'[m])).getDate(),d.getMonth()+1]

Format for the sign of the zodiac is either:

all lower case except the first character
all lower case

Test cases


let f =
(y,s,d)=&gt;[(d=new Date(y,m=s[2]=='s'?1:'r.sune0oapti'.search(s[4]||0),23+d-'343322110012'[m])).getDate(),d.getMonth()+1]

console.log(f(1791, 'Capricorn',  5)); // --&gt;  (26, 12)
console.log(f(1815, 'Scorpio',   10)); // --&gt;  ( 2, 11)
console.log(f(1860, 'Pisces',    10)); // --&gt;  (29,  2)
console.log(f(1890, 'Pisces',    20)); // --&gt;  (11,  3)
console.log(f(1900, 'Pisces',    17)); // --&gt;  ( 8,  3)
console.log(f(1938, 'Capricorn', 20)); // --&gt;  (10,  1)
console.log(f(2000, 'Pisces',    17)); // --&gt;  ( 7,  3)