diff --git a/org.eclipse.jdt.ui.tests/ui/org/eclipse/jdt/ui/tests/quickfix/ModifierCorrectionsQuickFixTest9.java b/org.eclipse.jdt.ui.tests/ui/org/eclipse/jdt/ui/tests/quickfix/ModifierCorrectionsQuickFixTest9.java
index f63668f..dbf1700 100644
--- a/org.eclipse.jdt.ui.tests/ui/org/eclipse/jdt/ui/tests/quickfix/ModifierCorrectionsQuickFixTest9.java
+++ b/org.eclipse.jdt.ui.tests/ui/org/eclipse/jdt/ui/tests/quickfix/ModifierCorrectionsQuickFixTest9.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2017 IBM Corporation and others.
+ * Copyright (c) 2017, 2018 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -151,4 +151,220 @@
 		assertExpectedExistInProposals(proposals, expected);
 	}
 
+	// Bug 530600 - [9][quick fix] should handle new variants of IProblem.OverridingDeprecatedMethod
+	// - since
+	public void testMethodOverrideDeprecated1() throws Exception {
+		Hashtable<String, String> options= JavaCore.getOptions();
+		options.put(JavaCore.COMPILER_PB_DEPRECATION_WHEN_OVERRIDING_DEPRECATED_METHOD, JavaCore.ENABLED);
+		JavaCore.setOptions(options);
+
+		IPackageFragment pack1= fSourceFolder.createPackageFragment("pack", false, null);
+		StringBuffer buf= new StringBuffer();
+		buf.append("package pack;\n");
+		buf.append("public class E {\n");
+		buf.append("    @Deprecated(since=\"3\")\n");
+		buf.append("    public void foo() {\n");
+		buf.append("    }\n");
+		buf.append("}    \n");
+		buf.append("\n");
+		buf.append("class F extends E {\n");
+		buf.append("    /**\n");
+		buf.append("     */\n");
+		buf.append("    public void foo() {\n");
+		buf.append("    }\n");
+		buf.append("}\n");
+		buf.append("\n");
+		ICompilationUnit cu= pack1.createCompilationUnit("E.java", buf.toString(), false, null);
+
+		CompilationUnit astRoot= getASTRoot(cu);
+		ArrayList<IJavaCompletionProposal> proposals= collectCorrections(cu, astRoot);
+
+		assertCorrectLabels(proposals);
+		assertNumberOfProposals(proposals, 3);
+
+		String[] expected= new String[2];
+		buf= new StringBuffer();
+		buf.append("package pack;\n");
+		buf.append("public class E {\n");
+		buf.append("    @Deprecated(since=\"3\")\n");
+		buf.append("    public void foo() {\n");
+		buf.append("    }\n");
+		buf.append("}    \n");
+		buf.append("\n");
+		buf.append("class F extends E {\n");
+		buf.append("    /**\n");
+		buf.append("     * @deprecated\n");
+		buf.append("     */\n");
+		buf.append("    @Deprecated\n");
+		buf.append("    public void foo() {\n");
+		buf.append("    }\n");
+		buf.append("}\n");
+		buf.append("\n");
+		expected[0]= buf.toString();
+
+		buf= new StringBuffer();
+		buf.append("package pack;\n");
+		buf.append("public class E {\n");
+		buf.append("    @Deprecated(since=\"3\")\n");
+		buf.append("    public void foo() {\n");
+		buf.append("    }\n");
+		buf.append("}    \n");
+		buf.append("\n");
+		buf.append("class F extends E {\n");
+		buf.append("    /**\n");
+		buf.append("     */\n");
+		buf.append("    @SuppressWarnings(\"deprecation\")\n");
+		buf.append("    public void foo() {\n");
+		buf.append("    }\n");
+		buf.append("}\n");
+		buf.append("\n");
+		expected[1]= buf.toString();
+
+		assertExpectedExistInProposals(proposals, expected);
+	}
+
+	// Bug 530600 - [9][quick fix] should handle new variants of IProblem.OverridingDeprecatedMethod
+	// - forRemoval
+	public void testMethodOverrideDeprecated2() throws Exception {
+		Hashtable<String, String> options= JavaCore.getOptions();
+		options.put(JavaCore.COMPILER_PB_DEPRECATION_WHEN_OVERRIDING_DEPRECATED_METHOD, JavaCore.ENABLED);
+		JavaCore.setOptions(options);
+
+		IPackageFragment pack1= fSourceFolder.createPackageFragment("pack", false, null);
+		StringBuffer buf= new StringBuffer();
+		buf.append("package pack;\n");
+		buf.append("public class E {\n");
+		buf.append("    @Deprecated(forRemoval=true)\n");
+		buf.append("    public void foo() {\n");
+		buf.append("    }\n");
+		buf.append("}    \n");
+		buf.append("\n");
+		buf.append("class F extends E {\n");
+		buf.append("    /**\n");
+		buf.append("     */\n");
+		buf.append("    public void foo() {\n");
+		buf.append("    }\n");
+		buf.append("}\n");
+		buf.append("\n");
+		ICompilationUnit cu= pack1.createCompilationUnit("E.java", buf.toString(), false, null);
+
+		CompilationUnit astRoot= getASTRoot(cu);
+		ArrayList<IJavaCompletionProposal> proposals= collectCorrections(cu, astRoot);
+
+		assertCorrectLabels(proposals);
+		assertNumberOfProposals(proposals, 3);
+
+		String[] expected= new String[2];
+		buf= new StringBuffer();
+		buf.append("package pack;\n");
+		buf.append("public class E {\n");
+		buf.append("    @Deprecated(forRemoval=true)\n");
+		buf.append("    public void foo() {\n");
+		buf.append("    }\n");
+		buf.append("}    \n");
+		buf.append("\n");
+		buf.append("class F extends E {\n");
+		buf.append("    /**\n");
+		buf.append("     * @deprecated\n");
+		buf.append("     */\n");
+		buf.append("    @Deprecated\n");
+		buf.append("    public void foo() {\n");
+		buf.append("    }\n");
+		buf.append("}\n");
+		buf.append("\n");
+		expected[0]= buf.toString();
+
+		buf= new StringBuffer();
+		buf.append("package pack;\n");
+		buf.append("public class E {\n");
+		buf.append("    @Deprecated(forRemoval=true)\n");
+		buf.append("    public void foo() {\n");
+		buf.append("    }\n");
+		buf.append("}    \n");
+		buf.append("\n");
+		buf.append("class F extends E {\n");
+		buf.append("    /**\n");
+		buf.append("     */\n");
+		buf.append("    @SuppressWarnings(\"removal\")\n");
+		buf.append("    public void foo() {\n");
+		buf.append("    }\n");
+		buf.append("}\n");
+		buf.append("\n");
+		expected[1]= buf.toString();
+
+		assertExpectedExistInProposals(proposals, expected);
+	}
+
+	// Bug 530600 - [9][quick fix] should handle new variants of IProblem.OverridingDeprecatedMethod
+	// - since and forRemoval
+	public void testMethodOverrideDeprecated3() throws Exception {
+		Hashtable<String, String> options= JavaCore.getOptions();
+		options.put(JavaCore.COMPILER_PB_DEPRECATION_WHEN_OVERRIDING_DEPRECATED_METHOD, JavaCore.ENABLED);
+		JavaCore.setOptions(options);
+
+		IPackageFragment pack1= fSourceFolder.createPackageFragment("pack", false, null);
+		StringBuffer buf= new StringBuffer();
+		buf.append("package pack;\n");
+		buf.append("public class E {\n");
+		buf.append("    @Deprecated(since=\"4.2\",forRemoval=true)\n");
+		buf.append("    public void foo() {\n");
+		buf.append("    }\n");
+		buf.append("}    \n");
+		buf.append("\n");
+		buf.append("class F extends E {\n");
+		buf.append("    /**\n");
+		buf.append("     */\n");
+		buf.append("    public void foo() {\n");
+		buf.append("    }\n");
+		buf.append("}\n");
+		buf.append("\n");
+		ICompilationUnit cu= pack1.createCompilationUnit("E.java", buf.toString(), false, null);
+
+		CompilationUnit astRoot= getASTRoot(cu);
+		ArrayList<IJavaCompletionProposal> proposals= collectCorrections(cu, astRoot);
+
+		assertCorrectLabels(proposals);
+		assertNumberOfProposals(proposals, 3);
+
+		String[] expected= new String[2];
+		buf= new StringBuffer();
+		buf.append("package pack;\n");
+		buf.append("public class E {\n");
+		buf.append("    @Deprecated(since=\"4.2\",forRemoval=true)\n");
+		buf.append("    public void foo() {\n");
+		buf.append("    }\n");
+		buf.append("}    \n");
+		buf.append("\n");
+		buf.append("class F extends E {\n");
+		buf.append("    /**\n");
+		buf.append("     * @deprecated\n");
+		buf.append("     */\n");
+		buf.append("    @Deprecated\n");
+		buf.append("    public void foo() {\n");
+		buf.append("    }\n");
+		buf.append("}\n");
+		buf.append("\n");
+		expected[0]= buf.toString();
+
+		buf= new StringBuffer();
+		buf.append("package pack;\n");
+		buf.append("public class E {\n");
+		buf.append("    @Deprecated(since=\"4.2\",forRemoval=true)\n");
+		buf.append("    public void foo() {\n");
+		buf.append("    }\n");
+		buf.append("}    \n");
+		buf.append("\n");
+		buf.append("class F extends E {\n");
+		buf.append("    /**\n");
+		buf.append("     */\n");
+		buf.append("    @SuppressWarnings(\"removal\")\n");
+		buf.append("    public void foo() {\n");
+		buf.append("    }\n");
+		buf.append("}\n");
+		buf.append("\n");
+		expected[1]= buf.toString();
+
+		assertExpectedExistInProposals(proposals, expected);
+	}
+
 }
diff --git a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/text/correction/QuickFixProcessor.java b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/text/correction/QuickFixProcessor.java
index 38b7ccc..ed7dbf9 100644
--- a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/text/correction/QuickFixProcessor.java
+++ b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/text/correction/QuickFixProcessor.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2017 IBM Corporation and others.
+ * Copyright (c) 2000, 2018 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -207,6 +207,9 @@
 			case IProblem.InvalidUsageOfAnnotationDeclarations:
 			case IProblem.FieldMissingDeprecatedAnnotation:
 			case IProblem.OverridingDeprecatedMethod:
+			case IProblem.OverridingDeprecatedSinceVersionMethod:
+			case IProblem.OverridingTerminallyDeprecatedMethod:
+			case IProblem.OverridingTerminallyDeprecatedSinceVersionMethod:
 			case IProblem.MethodMissingDeprecatedAnnotation:
 			case IProblem.TypeMissingDeprecatedAnnotation:
 			case IProblem.MissingOverrideAnnotation:
@@ -667,6 +670,9 @@
 				ModifierCorrectionSubProcessor.addDeprecatedAnnotationProposal(context, problem, proposals);
 				break;
 			case IProblem.OverridingDeprecatedMethod:
+			case IProblem.OverridingDeprecatedSinceVersionMethod:
+			case IProblem.OverridingTerminallyDeprecatedMethod:
+			case IProblem.OverridingTerminallyDeprecatedSinceVersionMethod:
 				ModifierCorrectionSubProcessor.addOverridingDeprecatedMethodProposal(context, problem, proposals);
 				break;
 			case IProblem.IsClassPathCorrect:
