Перфект требует точки достижения,
А разве for a long time недостаточно для перфекта? Вне этого предложения? Нельзя сказать, например, "Animals have been spanking him for a long time"?
Нет, недостаточно.
Возьмем предложение -
Я жил (живу) в Саратове 7 лет.На схеме будет легче понять. Точка А – начало действия, точка В –конец действия, С - настоящий момент.
A________ B
Условимся, что между точками А и В промежуток времени, обозначенный сочетанием предлога for и обозначением длительности.
1. Если точка В и С совпадают, то к этому моменту я прожил здесь …. лет, и нужен Present Perfect. Здесь В точка достижения - настоящий момент.
A________ BС
I have lived in Saratov for 7 years.
I have lived in Saratov for 7 years, since I came from Tver.
I came from Tver – это точка А, момент в прошлом.
2. Если отрезок АВ расположен где-то в прошлом и не примыкает к настоящему, то это Past Simple. A________ B________ С
I lived in Tver for 10 years. Now I live in Saratov.
Неважно, где жил человек на отрезке ВС, главное, что АВ не примыкает к настоящему.
В не является точкой достижения, потому что момент В не обозначен конкретно ни событием, ни указанием времени.
...and they spanked him for a long time.
Это отрезок, конец которого ни к чему не примыкает, поэтому перфект не нужен.
3. Если отрезок АВ расположен где-то в прошлом и примыкает к обозначенному точкой В другому действию, то это Past Perfect.
________A________ B_________С.
I had lived in Tver for 7 years before I came to Saratov.
Точка В обозначена действием – приехал в Саратов. Есть точка достижения – приезд в Саратов, поэтому нужен перфект, но не настоящий, а прошедший, т.к. точка достижения сама находится в прошлом.
Past Perfect – это как бы предпрошедшее время, где точка В в прошлом.
Если к этой схеме добавить длительность, то будет Present Perfect Continuous (В совпадает с точкой достижения - настоящим моментом) или Past Perfect Continuous (точка В в прошлом).