diff --git a/src/zipr.cpp b/src/zipr.cpp
index c6a6db1310325f30400655090a19da348ed36fbb..ed0f94038a923005ac6faf730b491e9cc19335f6 100644
--- a/src/zipr.cpp
+++ b/src/zipr.cpp
@@ -574,6 +574,12 @@ void ZiprImpl_t::FindFreeRanges(const std::string &name)
 		RangeAddress_t this_end = this_scoop->GetEnd()->GetVirtualOffset(),
 		               next_start = 0;
 
+		if(this_scoop->GetStart()->GetVirtualOffset()==0)
+		{
+			// unpinned scoops can get ignored.
+			continue;
+		}
+
 		if (m_verbose)
 			cout << "There's a scoop between " << std::hex
 		       << this_scoop->GetStart()->GetVirtualOffset()
@@ -654,6 +660,12 @@ void ZiprImpl_t::FindFreeRanges(const std::string &name)
 		DataScoop_t* scoop=*it;
 		RangeAddress_t  end=scoop->GetEnd()->GetVirtualOffset();
 
+		if(scoop->GetStart()->GetVirtualOffset()==0)
+		{
+			// unpinned scoops can get ignored.
+			continue;
+		}
+
 		if(end >= max_addr)
 		{
 			max_addr=end+1;