Melt butter in a small saucepan over low heat, then add the milk. Heat until the milk is warm to the touch. (105°-115°) Pour into a large mixing bowl.
Add yeast, sugar, salt, egg, and half of the flour. Beat with an electric mixer at medium speed until smooth. Stir in enough remaining flour to make a dough that is soft.
Knead for about 3 minutes on a lightly floured surface. Place dough in a large bowl that has been sprayed with non stick spray. (I usually just scrape out the mixing bowl and re-use it.) Cover and let dough rise in a warm place till doubled, about an hour.
For filling: Melt the butter in a small bowl. Stir in the sugar and lemon zest.
On a lightly oiled countertop, use a rolling pin to roll dough out into an approximately 18x12-inch rectangle. Spread the filling in an even layer over the dough.
Roll the dough up lengthwise into a tight log and pinch the seam together to seal. Cut into slices using a piece of unflavored dental floss. Just wrap the floss under the dough, cross it over the top, and pull.
Place rolls in a greased 9x13" pan. Let rise till doubled, about 30-45 minutes.
Bake at 350° on a lower oven rack for about 25 minutes or until golden brown. Let cool for 25-30 minutes.
For frosting: Combine the softened butter and cream cheese in a medium bowl. Beat until smooth and creamy. Add salt, lemon zest, powdered sugar, and one tablespoon of the lemon juice. Beat until creamy, adding more lemon juice if needed.
Frost lemon rolls after they have cooled slightly.