diff --git a/src/bsdfs/coating.cpp b/src/bsdfs/coating.cpp
index c46e3386..e0d3fc08 100644
--- a/src/bsdfs/coating.cpp
+++ b/src/bsdfs/coating.cpp
@@ -380,7 +380,7 @@ public:
 	}
 
 	Float getRoughness(const Intersection &its, int component) const {
-		return component < (int) m_components.size()
+		return component < (int) m_components.size()-1
 			? m_nested->getRoughness(its, component) : (Float) 0;
 	}
 
diff --git a/src/bsdfs/roughcoating.cpp b/src/bsdfs/roughcoating.cpp
index d21c8536..5f30e7bb 100644
--- a/src/bsdfs/roughcoating.cpp
+++ b/src/bsdfs/roughcoating.cpp
@@ -438,7 +438,7 @@ public:
 	}
 
 	Float getRoughness(const Intersection &its, int component) const {
-		return component < (int) m_components.size()
+		return component < (int) m_components.size() - 1
 			? m_nested->getRoughness(its, component)
 			: m_alpha->eval(its).average();
 	}