code: func PreviousSubnet(network *net.IPNet, prefixLen int) (*net.IPNet, bool) {
  	startIP := checkIPv4(network.IP)
  	previousIP := make(net.IP, len(startIP))
  	copy(previousIP, startIP)
  	cMask := net.CIDRMask(prefixLen, 8*len(previousIP))
  	previousIP = Dec(previousIP)
  	previous := &net.IPNet{IP: previousIP.Mask(cMask), Mask: cMask}
  	if startIP.Equal(net.IPv4zero) || startIP.Equal(net.IPv6zero) {
  		return previous, true
  	}
  	return previous, false
  }
docs: // PreviousSubnet returns the subnet of the desired mask in the IP space
  // just lower than the start of IPNet provided. If the IP space rolls over
  // then the second return value is true