diff --git a/auto/Examples/scatter2d/BroadSpecular.py b/auto/Examples/scatter2d/BroadSpecular.py
new file mode 100755
index 0000000000000000000000000000000000000000..6ca871762c404cc6fc1e41368c3b705640d0a31a
--- /dev/null
+++ b/auto/Examples/scatter2d/BroadSpecular.py
@@ -0,0 +1,39 @@
+#!/usr/bin/env python3
+import bornagain as ba
+from bornagain import ba_plot as bp, deg, nm
+
+def get_sample():
+    # Define materials
+    material_Si = ba.RefractiveMaterial("Si", 5.7816e-06, 1.0229e-07)
+    material_Vacuum = ba.RefractiveMaterial("Vacuum", 0.0, 0.0)
+
+    # Define layers
+    layer_1 = ba.Layer(material_Vacuum)
+    layer_4 = ba.Layer(material_Si)
+
+    # Define sample
+    sample = ba.MultiLayer()
+    sample.addLayer(layer_1)
+    sample.addLayer(layer_4)
+
+    return sample
+
+
+def get_simulation(sample):
+    beam = ba.Beam(1e9, 0.1*nm, 0.5*deg)
+    n = 200
+    detector = ba.Detector2D(1*deg, 1*deg, n, n, 0, 0.5 * deg)
+    detector.setResolutionFunction(
+        ba.ResolutionFunction2DGaussian(0.04*deg, 0.03*deg))
+    simulation = ba.ScatteringSimulation(beam, sample, detector)
+    simulation.options().setUseAvgMaterials(True)
+    simulation.options().setIncludeSpecular(True)
+    return simulation
+
+
+if __name__ == '__main__':
+    sample = get_sample()
+    simulation = get_simulation(sample)
+    result = simulation.simulate()
+    bp.plot_simulation_result(result)
+    bp.show_or_export()
diff --git a/auto/MiniExamples/scatter2d/BroadSpecular.py b/auto/MiniExamples/scatter2d/BroadSpecular.py
new file mode 100755
index 0000000000000000000000000000000000000000..22dabcf9703869a7a96c9071fd3be8ad45d48ab7
--- /dev/null
+++ b/auto/MiniExamples/scatter2d/BroadSpecular.py
@@ -0,0 +1,39 @@
+#!/usr/bin/env python3
+import bornagain as ba
+from bornagain import ba_plot as bp, deg, nm
+
+def get_sample():
+    # Define materials
+    material_Si = ba.RefractiveMaterial("Si", 5.7816e-06, 1.0229e-07)
+    material_Vacuum = ba.RefractiveMaterial("Vacuum", 0.0, 0.0)
+
+    # Define layers
+    layer_1 = ba.Layer(material_Vacuum)
+    layer_4 = ba.Layer(material_Si)
+
+    # Define sample
+    sample = ba.MultiLayer()
+    sample.addLayer(layer_1)
+    sample.addLayer(layer_4)
+
+    return sample
+
+
+def get_simulation(sample):
+    beam = ba.Beam(1e9, 0.1*nm, 0.5*deg)
+    n = 11
+    detector = ba.Detector2D(1*deg, 1*deg, n, n, 0, 0.5 * deg)
+    detector.setResolutionFunction(
+        ba.ResolutionFunction2DGaussian(0.04*deg, 0.03*deg))
+    simulation = ba.ScatteringSimulation(beam, sample, detector)
+    simulation.options().setUseAvgMaterials(True)
+    simulation.options().setIncludeSpecular(True)
+    return simulation
+
+
+if __name__ == '__main__':
+    sample = get_sample()
+    simulation = get_simulation(sample)
+    result = simulation.simulate()
+    bp.plot_simulation_result(result)
+    bp.show_or_export()
diff --git a/rawEx/scatter2d/BroadSpecular.py b/rawEx/scatter2d/BroadSpecular.py
new file mode 100755
index 0000000000000000000000000000000000000000..51f68a7ac382121aacee1a71d280ce062c4a7f7d
--- /dev/null
+++ b/rawEx/scatter2d/BroadSpecular.py
@@ -0,0 +1,39 @@
+#!/usr/bin/env python3
+import bornagain as ba
+from bornagain import ba_plot as bp, deg, nm
+
+def get_sample():
+    # Define materials
+    material_Si = ba.RefractiveMaterial("Si", 5.7816e-06, 1.0229e-07)
+    material_Vacuum = ba.RefractiveMaterial("Vacuum", 0.0, 0.0)
+
+    # Define layers
+    layer_1 = ba.Layer(material_Vacuum)
+    layer_4 = ba.Layer(material_Si)
+
+    # Define sample
+    sample = ba.MultiLayer()
+    sample.addLayer(layer_1)
+    sample.addLayer(layer_4)
+
+    return sample
+
+
+def get_simulation(sample):
+    beam = ba.Beam(1e9, 0.1*nm, 0.5*deg)
+    n = <%= sm ? 11 : 200 %>
+    detector = ba.Detector2D(1*deg, 1*deg, n, n, 0, 0.5 * deg)
+    detector.setResolutionFunction(
+        ba.ResolutionFunction2DGaussian(0.04*deg, 0.03*deg))
+    simulation = ba.ScatteringSimulation(beam, sample, detector)
+    simulation.options().setUseAvgMaterials(True)
+    simulation.options().setIncludeSpecular(True)
+    return simulation
+
+
+if __name__ == '__main__':
+    sample = get_sample()
+    simulation = get_simulation(sample)
+    result = simulation.simulate()
+    bp.plot_simulation_result(result)
+    bp.show_or_export()