91³Ô¹ÏÍø

Watch CBS News

Stephen Paul Gale sentenced to 50-60 years for 2 rapes at Framingham, Massachusetts store in 1989

Stephen Paul Gale, the man once nicknamed the "Boston Strip Mall Rapist," was sentenced to 50 to 60 years in prison on Monday afternoon for two rapes in Framingham, Massachusetts, more than 36 years ago.

Gale, 73, was convicted March 24 of raping two women at the Hit or Miss Store in Framingham on Dec. 27, 1989.

A Middlesex Superior Court jury found him guilty of four counts of aggravated rape, two counts of kidnapping and one count of armed robbery after a 12-day trial. 

Gale was given two 25-30-year sentences for each of the two victims, to be served consecutively. He will be eligible for parole after serving 33 years. Gale was also sentenced to at least ten years of probation for the kidnapping charges, which includes an order to stay away from both victims.

"While Mr. Gale was living what he describes as an amazing life, both of these victims were suffering and still continue to suffer to this day and for the rest of their lives because of the actions of Mr. Gale," Judge Haggan said.

During sentencing, Gale's defense attorney, Debra Dewitt, asked Judge Patrick Haggan to consider her client's failing health and age. Dewitt said that they will appeal the sentence. 

Investigators said he asked two women working at the store for help before pointing a gun at their heads, stealing money from the safe and raping them. One of the women saved DNA evidence after the attack.

DNA from genetic genealogy connected Gale to the rapes in May 2024. Investigators said he had at least eight aliases. U.S. Marshals eventually found him living on a million-dollar yacht off the coast of Los Angeles. He was caught in August 2024 after a long chase in southern California. The statute of limitations did not apply to this case because Gale moved out of state after the rapes.

During the trial, the two women faced Gale in court and recounted how their lives changed. Both are experiencing PTSD, panic attacks, and have left Massachusetts.

"I refused to remain a victim. I became a survivor. But the impact of what was done has never fully disappeared. I remember that day so vividly and details that would have been better left forgotten," one woman said.

"It brings closure and it brings more healing. I am grateful for the support received along the way and what went into making this day possible," the other victim said.

Gale's defense questioned the quality of the evidence and argued that the prosecution did not prove his guilt beyond a reasonable doubt. 

View CBS News In
CBS News App Open
Chrome Safari Continue
const link = doc.createElement('link'); link.rel = 'stylesheet'; link.href = '/fly/fly/bundles/cbsnewscontent/css/cmp-banner.min.css?v=296763317a51cab90faa73f1bb146d5c'; doc.head.appendChild(link); doc.body.innerHTML = CONSENT_MESSAGE; } else { el.insertAdjacentHTML('afterend', CONSENT_MESSAGE); } }); } function hidePrivacyMessage() { // Remove from the main document document.querySelectorAll(`.${CONSENT_MESSAGE_CLASS}`).forEach(el => el.remove()); // Remove from inside any iframes document.querySelectorAll('iframe').forEach(iframe => { const doc = iframe.contentDocument || iframe.contentWindow.document; doc.querySelectorAll(`.${CONSENT_MESSAGE_CLASS}`).forEach(el => el.remove()); }); } function activateGatedScripts() { // Handle both new format (cmp-gated-script) and old OneTrust/Ketch format (optanon-category-4) const gatedScripts = Array.from(document.querySelectorAll('script.cmp-gated-script, script.optanon-category-4')); // Activate scripts sequentially with a small delay to avoid timing issues let delay = 0; gatedScripts.forEach(function(placeholder, index) { setTimeout(function() { // Skip if already processed if (placeholder.hasAttribute('data-cmp-processed')) { return; } placeholder.setAttribute('data-cmp-processed', 'true'); const newScript = document.createElement('script'); newScript.type = 'text/javascript'; // Try new format first (data-cmp-src), then fall back to old format (data-src) const src = placeholder.getAttribute('data-cmp-src') || placeholder.getAttribute('data-src'); if (src) { newScript.src = src; } else if (placeholder.textContent) { // Inline script - just copy the content newScript.textContent = placeholder.textContent; } // Handle new format attributes (data-cmp-attrs) - for both inline and external scripts const attrs = placeholder.getAttribute('data-cmp-attrs'); if (attrs) { const tempDiv = document.createElement('div'); tempDiv.innerHTML = '
<\/div>'; const tempAttrs = tempDiv.firstChild.attributes; for (let i = 0; i < tempAttrs.length; i++) { // For external scripts, allow defer/async. For inline scripts, skip them (not valid) if (src || (tempAttrs[i].name !== 'async' && tempAttrs[i].name !== 'defer')) { newScript.setAttribute(tempAttrs[i].name, tempAttrs[i].value); } } } // Copy other attributes from old OneTrust format for (let i = 0; i < placeholder.attributes.length; i++) { const attr = placeholder.attributes[i]; // Skip attributes we've already handled or don't want to copy if (!['class', 'data-src', 'data-type', 'data-cmp-src', 'data-cmp-attrs', 'data-cmp-processed', 'type', 'async', 'defer', 'src'].includes(attr.name)) { newScript.setAttribute(attr.name, attr.value); } } placeholder.parentNode.replaceChild(newScript, placeholder); // If external script, manually trigger window.onload handlers after it loads // This handles widgets that use window.onload for initialization if (src) { newScript.addEventListener('load', function() { // If page already loaded and script set a new onload handler, trigger it if (document.readyState === 'complete' && window.onload) { const originalOnload = window.onload; window.onload = null; // Clear temporarily to prevent loops originalOnload(); // Execute the handler } }); } }, delay); delay += 500; // 500ms delay between each script to allow full loading }); } cbsoptanon.onScriptsReady(function(cmp) { cmp.ot.targetingAllowed(function(allowed) { if (!allowed) { showPrivacyMessage(); } else { activateGatedScripts(); } }); cmp.ot.awaitInitialConsent(function(consent_model) { cmp.ot.addOnConsentChangedHandler(function() { cmp.ot.targetingAllowed(function(allowed) { if (allowed) { hidePrivacyMessage(); activateGatedScripts(); } else { showPrivacyMessage(); } }); }); }); });